-2

与えられた引数に基づいて検索できるカタログを作成しようとしています。naam は商品名、wood は与えられた文字です。スクリプトの後半で、クエリのこの部分を最初の部分に接着します。

ありがとうございました

if(strlen($whereQuery) > 0) 
    $whereQuery .= 'AND naam LIKE '%'.$woord.'%'';
else
    $whereQuery = 'WHERE naam LIKE '%'.$woord.'%'';
4

4 に答える 4

1

混乱を避けるために二重引用符を使用したいのですが、

if(strlen($whereQuery) > 0) 
    $whereQuery .= " AND naam LIKE '%" .$woord. "%' ";
else
    $whereQuery = " WHERE naam LIKE '%" .$woord. "%' ";

または単に、

if(strlen($whereQuery) > 0) 
    $whereQuery .= " AND naam LIKE '%$woord%' ";
else
    $whereQuery = " WHERE naam LIKE '%$woord%' ";

補足として、変数のSQL Injection値が外部から取得された場合、クエリは脆弱です。予防方法については、以下の記事をご覧ください。を使用すると、値を一重引用符で囲む必要がなくなります。PreparedStatements

于 2013-02-20T15:42:28.500 に答える
1

二重引用符を使用します。

または、一重引用符をエスケープします。


また、現在行っていることを行わないでください。

mysql_*新しいコードで関数を使用しないでください。それらはもはや保守されておらず、公式に非推奨です赤いボックスがか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事はどちらを使用するかを決めるのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2013-02-20T15:42:43.137 に答える
0

クエリの一部である引用符をエスケープする必要があります。

if(strlen($whereQuery) > 0) 
    $whereQuery .= 'AND naam LIKE \'%'.$woord.'%\'';
else
    $whereQuery = 'WHERE naam LIKE \'%'.$woord.'%\'';

または、一重引用符と二重引用符を組み合わせて使用​​します。

于 2013-02-20T15:42:42.957 に答える