明らかに、私は声明を間違って準備していますが、何が間違っているのかはわかりません。
これら 2 つのコード セグメントは、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` = 'me@example.com' OR `Users`.`Temp_EMail` = 'me@example.com'");
$sth->execute(array(':email' => $email, ':temp_email' => $email));
$sth->setFetchMode(PDO::FETCH_ASSOC);
$res = $sth->fetch();
$dbh = null;
私は何を間違っていますか?
ありがとう!
更新:解決しました!
正確な問題はまだ不明ですが、以下のコメントでユーザー 'Your Common Sense' によって提案された '過度の命名' に関連しているようです。
これはうまくいきます:
$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));
みんなありがとう。多くのことを学び、問題を解決しました。
あなたの常識へのメッセージ; コメントを「回答」として作成していただければ、それを受け入れることができます。