2014-01-13 5 views
0

у меня есть этот код, который соединит в базу данныхошибки при попытке вставить в базу данных в функции

(config.php)

<?php 
try{ 
$ponte_db = new PDO ("mysql:host=localhost;dbname=helloius", "asasa", "6233"); 
}catch (PDOException $e) { 
    $data = date("d/m/Y H:i:s "); 
    $mensagem = "Erro no banco de dados:<br>".$e->getMessage()."<br>"."Ocorrido em: ".$data; 
    mail('[email protected]', 'Erro Banco de Dados', $mensagem); 
    echo '<script>alert("Desculpe,mas os nossos servidores estao sendo reparados neste exato momento,tente em uma outra hora!");</script>'; 
} 
?> 

Ну в другом проекте (кто делает вставку) я этот код

<?php 
include ('config.php'); 

function DoConfig($param_data){ 
    $info_config = $ponte_db->prepare("INSERT INTO config (r1) VALUES (:a)"); 
    $info_config->bindValue(":a", $paran_data); 
    $info_config->execute(); 
    }  

if($_SERVER['REQUEST_METHOD'] == 'POST'){ 

if(isset($_POST['data_id']) && $_POST['data_id'] != NULL){ 

    $data = $_POST['data_id']; 
    DoConfig($data); 


} 

} 

?> 

Так что, когда я удалить функцию DoConfig и поставить PDO вставки снаружи, моя база данных может сделать вставку, но в этом случае (вставка внутри функции) моя база данных не получают какой-либо данных, d я получаю эти ошибки:

Undefinied переменная ponte_db

вызов функции-члена подготовить() на не-объект

Как я могу это исправить?

+0

Sidenote: У вас есть опечатка '$ paran_data' в' $ info_config-> bindValue (": а", $ paran_data) ', который следует читать как' $ param_data' согласно 'функции DoConfig ($ param_data) ' –

+1

@ Fred-ii-, Отличная находка! –

+1

Да, однако я уверен, что это просто опечатка, поэтому сообщение об ошибке «набрало» в вопросе OP «Неопределенная переменная ponte_db» @ShankarDamodaran, которая должна читать как «Undefined» ;-) –

ответ

1

Проблема заключается в том нет никакой связи PDO в функции, потому что вы не можете использовать переменную, которая объявлена ​​вне функции внутри функции, так это изменить:

function DoConfig($param_data){ 

в

function DoConfig($ponte_db, $param_data){ 

и изменить вызов функции из этого:

DoConfig($param_data); 

к этому:

DoConfig($ponte_db, $param_data); 
Смежные вопросы