0

なぜこれが機能しないのか、一生理解できません。これとほぼ同じコードを使用する Web サイトの別の領域があり、問題なく動作します。それは明らかなことだと確信していますが、私はこのことにかなり慣れていません。エラーなどはありません。それは何もしません。$name 変数は正常に動作し (テスト済み)、データベースは最新です。

try {
     $db = new PDO($dbhost, $dbuser, $dbpassword);
     $statement = $db->prepare("select first, last from users where email = $name");
     $result = $statement->fetch();
     $first = $result[first];
     $last = $result[last];
}catch(PDOException $e) {
     echo $e->getMessage();
}
4

2 に答える 2

1

execute() を使用する必要があります

try {
$db = new PDO($dbhost, $dbuser, $dbpassword);
$statement = $db->prepare("select first, last from users where email = ?");
$statement->execute(array($name));
$result = $statement->fetch();
$first = $result[first];
$last = $result[last];}

catch(PDOException $e) {echo $e->getMessage();}
于 2012-07-23T14:11:30.200 に答える
0

実際にクエリを実行する前に行をフェッチすることはできません。クエリを準備しただけです。究極の問題は、 への呼び出しがないことです$statement->execute()。適切な PDO イディオムは次のようなものです。

$statement = $db->prepare("select first, last from users where email = ?");
if (!$statement->execute(array($name))) {
    // Handle error
}
$result = $statement->fetch();
$statement->closeCursor();

closeCursor()行のフェッチが終了したら、呼び出しを忘れないでください。同じクライアントによる同時クエリをサポートしていない一部のデータベース システムでは、この関数を呼び出さないと、次のクエリの実行に失敗する可能性があります。

于 2012-07-23T14:11:43.897 に答える