j'obtiensErreur sur l'appel d'une fonction avec la connexion au serveur SQL
Fatal error: Call to a member function query() on a non-object in C:...\test.php on line 27
après avoir appelé callQuery2
.
<?php
dbConnect();
callQuery1();
callQuery2();
function callQuery1(){
// SQL query
$q = "SELECT * FROM table1 WHERE name like 'john%' ";
// Execute query
$data1 = exeQuery($q);
}
function callQuery2(){
// SQL query
$q = "SELECT * FROM table2 WHERE event = 'holiday' ";
// Execute query
$data2 = exeQuery($q);
}
// Execute SQL Query
function exeQuery($qry) {
global $pdo;
####### LINE 27 #######
$stmt = $pdo->query($qry);
if($stmt = $pdo->prepare($qry)) {
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
return $data;
}
}
// database connection
function dbConnect(){
$DBSERVER = "***";
$DBUSER = "***";
$DBPASS = "***";
$DBNAME = "***";
// OBDC
try {
$pdo = new PDO("odbc:DRIVER={SQL Server};Server={$DBSERVER};Database={$DBNAME}", $DBUSER, $DBPASS);
// set the PDO error mode to exception
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//die(json_encode(array('outcome' => true)));
}
catch(PDOException $ex) {
//die(json_decode(array('outcome' => false, 'message' => 'Unable to connect')));
}
}
?>
Pourquoi l'erreur n'apparaît-elle qu'à ce moment-là? Est-ce la meilleure façon de faire cela?
Cordialement, Elio Fernandes
globals ... yuk. Passez simplement l'objet $ pdo à votre fonction exeQuery. Et même si 'global $ pdo; 'fonctionne, il semble que $ pdo n'a pas été instancié. dbConnect() doit retourner l'objet $ pdo qu'il crée, afin que vous puissiez le passer à d'autres fonctions. – ADyson
Adyson, est-ce que cela vous dérange de faire les changements que vous dites dans le code que j'ai posté? –