20

わかりました、これが問題です:

これは機能します:

$STH = $DBH->prepare("SELECT * FROM juegos WHERE id = 1");
$STH->execute();

これはしません:

$STH = $DBH->prepare("SELECT * FROM juegos WHERE id = :id");
$STH->bindParam(':id', '1', PDO::PARAM_STR);
$STH->execute();

私は一体何を間違っているのでしょうか?例外すらスローしません

みんなありがとう!

また、これはコード全体です

<?php
    try {
        $DBH = new PDO("everything is", "ok", "here");

        $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

        $STH = $DBH->prepare("SELECT * FROM juegos WHERE id = :id");
        $STH->bindParam(':id', '1', PDO::PARAM_STR);
        $STH->execute();

        $STH->setFetchMode(PDO::FETCH_ASSOC);

        while($row = $STH->fetch()) {
            echo $row['nombre']."<br/>";
        }

        $DBH = null;

        echo "Todo salió bien";

    } catch (PDOException $e) {
        echo "Error";
    }

?>
4

5 に答える 5

28

bindParam()変数の使用は参照としてバインドされます

文字列は参照渡しできません

次のものは、参照によって渡すことができます。

変数、つまり foo($a)

新しいステートメント、つまり foo(new foobar())

関数から返される参照

使ってみてbindValue()

$STH->bindValue(':id', '1', PDO::PARAM_STR);
于 2013-11-11T11:01:30.950 に答える
2

パラメータの値は、:tablaPDO によって自動的に引用符で囲まれ、エスケープされます。実行されるクエリは次のようになります。

SELECT * FROM 'juegos'

これは有効な SQL ではありません。

于 2013-11-11T08:49:01.443 に答える