顯然,我正在準備錯誤的陳述,但我不確定我做錯了什麼。我的PDO準備聲明有什麼問題?
這2個代碼段是相同的,,除了第二行的。
這種失敗:
$dbh = new PDO('mysql:host=localhost;dbname=' . $DB_Database, $DB_UserName, $DB_Password);
$sth = $dbh->prepare("SELECT * FROM `PNB`.`Users` WHERE `Users`.`EMail` = :email OR `Users`.`Temp_EMail` = :temp_email");
$sth->execute(array(':email' => $email, ':temp_email' => $email));
$sth->setFetchMode(PDO::FETCH_ASSOC);
$res = $sth->fetch();
$dbh = null;
這個硬編碼的測試原理:
$dbh = new PDO('mysql:host=localhost;dbname=' . $DB_Database, $DB_UserName, $DB_Password);
$sth = $dbh->prepare("SELECT * FROM `PNB`.`Users` WHERE `Users`.`EMail` = '[email protected]' OR `Users`.`Temp_EMail` = '[email protected]'");
$sth->execute(array(':email' => $email, ':temp_email' => $email));
$sth->setFetchMode(PDO::FETCH_ASSOC);
$res = $sth->fetch();
$dbh = null;
我在做什麼錯?
謝謝!
更新:解決!
確切的問題仍然未知,但似乎與下面評論中用戶'您的常識'提出的'過多的命名'有關。
這只是正常:
$dbh = new PDO('mysql:host=localhost;dbname=' . $DB_Database, $DB_UserName, $DB_Password);
$sth = $dbh->prepare("SELECT * FROM Users WHERE EMail=:email OR Temp_EMail=:temp_email");
$sth->execute(array(':email' => $email, ':temp_email' => $email));
感謝大家。我學到了很多,解決了這個問題。
給您常識的留言;如果您將您的評論形成「答案」,那麼我可以接受它。
你得到一個錯誤? – Barmar 2013-02-25 19:16:17
順便說一句,這種過度的命名沒有用處。 ''SELECT * FROM Users WHERE EMail =:email OR Temp_EMail =:temp_email「'沒問題。 – 2013-02-25 19:21:20
謝謝。我懷疑過度的命名是沒有價值增加的。只是想與我在調試時看到的例子保持一致。 – Eric 2013-02-25 19:49:42