1

WHEREステートメントを追加すると、selectステートメントが機能しません。

次のコードは何かを返します:

$sql = "SELECT * FROM statement";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array(':words'=>$words));

しかし、これはしません:

$sql = "SELECT * FROM statement WHERE words='(:words)'";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array(':words'=>$words));

理由はわかりません。「words」要素が$wordsと等しいステートメントオブジェクトがないためだと思われるかもしれませんが、あります...最初のコードでこのループを実行できます。

foreach ($stmt as $s)
{
    var_dump($words, $s['words'], ($words==$s['words']));
    echo "<br>";
}

そしてここに私の出力があります:

string(4) "test" string(5) "test1" bool(false) 
string(4) "test" string(5) "test2" bool(false) 
string(4) "test" string(4) "test" bool(true) 

それで、取引は何ですか?なぜこれが機能しないのかわかりません。私が非常に愚かなことをしているなら、私に知らせてください。

4

2 に答える 2

0

PDOが機能するため、パラメータに追加のアポストロフィは必要ない場合があります。PDOは、変数のタイプに応じて自動的に機能します。したがって、これは正常に機能します。

$sql = "SELECT * FROM statement WHERE words=:words";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array(':words'=>$words));
于 2013-03-25T06:32:38.873 に答える
-1

以下でこれを試すことができます:

$sql = "SELECT * FROM statement WHERE words in (':words')"; $statement->execute(array(':words' => $words));

一重引用符内で()を使用すると、結果は得られません。

ありがとう

于 2013-03-25T03:20:20.933 に答える