0

何らかの理由で、PHP PDO sql 検索で何も表示されません。サイトにある種の検索エンジンを実装しようとしていますが、何も得られないようです。これまでさまざまなソリューションを試してきましたが、正確に正しいパラメーターが与えられたとしても、検索は空になり続けます。$find 変数はユーザーが入力します。$field 変数は、ユーザーが検索対象を選択できるドロップダウン リストであり、データベース内の列の名前に等しい値を返します。

            $find = strtoupper($_POST['find']);
            $find = "%" . $find . "%";
            $field = $_POST['field'];

            $qry = $conn->prepare("SELECT * FROM \"MovieDB\" WHERE upper(:field) LIKE :find%");
            $qry->bindParam(':find', $find, PDO::PARAM_STR, 16);
            $qry->bindParam(':field',$field, PDO::PARAM_STR,16);
            $qry->execute();
            $results = $qry->fetchAll();
4

1 に答える 1

0

PDO は、フィールド名またはテーブル名のバインディングを許可しません。

フィールド値をクエリ文字列に直接挿入することをお勧めします。
SQL インジェクションを避けるために、必ずサニタイズしてください。

$qry = $conn->prepare("SELECT * FROM \"MovieDB\"
                       WHERE upper(`".$field_santizied."`) LIKE :find");
$qry->bindParam(':find', $find, PDO::PARAM_STR, 16);

PDO でクエリを動的に構築する方法

php.net は、テーブル名をバインドできないことを参照しています:
http://us3.php.net/manual/en/book.pdo.php#69304

于 2013-06-13T21:28:22.190 に答える