我試圖在一個函數內執行查詢,但它返回「沒有選擇數據庫」。我經常都重新初始化PDO對象裏面功能內沒有選擇數據庫,PDO的解決方案是什麼?
$db = "mysql:host=localhost;dbname=my_database";
$pdo = new PDO($db, 'dbname', 'dbpassword');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//some operations.. Works fine!
function sendMail($to)
{
$db = "mysql:host=localhost;dbname=my_database";
$pdo = new PDO($db, 'dbname', 'dbpassword');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$qryString="SELECT Codice FROM users WHERE Mail=:mail";
$qry = $pdo->prepare($qryString);
$params = array("mail" => $to);
$qry->execute($params); //won't work
}
需要注意的是在功能之外的DB操作工作正常。
的問題是,該代碼將無法正常工作既不通過全球$ PDO對象。 這是實際的碼
$db = "mysql:host=localhost;dbname=my_database";
$pdo = new PDO($db, 'dbname', 'dbpassword');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
sendMail($mail, $pdo)
function sendMail($to, PDO $pdo)
{
$qryString="SELECT Codice FROM users WHERE Mail=:mail";
$qry = $pdo->prepare($qryString);
$params = array("mail" => $to);
$qry->execute($params);
}
複製的? [如何使一個函數內部PDO查詢工作](http://stackoverflow.com/questions/8181202/how-to-make-pdo-query-work-inside-a-function) –
通'$ pdo'作爲你的函數的參數,或者使用'global $ pdo;'。 –
alredy做到這一點,但無論兩部作品 – Sonia