0
プロパティ名(1つ以上の単語でも可)のテーブルを持つMySqL DBがあります。オートコンプリートフィールドに使用するユーザーテキスト入力の結果を取得するクエリを実行したいとします。オートコンプリートのPHP SQLクエリー
私が現在使用してクエリは次のとおりです。
$query = "SELECT * FROM table WHERE LOWER(name) LIKE '%$value%' LIMIT 7";
しかし、それは十分ではありません。
Iは、入力$値を分割するが、何らかの理由で動作しない試してみました:
$values = explode(" ", $value);
$str = "";
for($i = 0; $i < count($values); ++$i)
{
if($i == 0)
$str .= "LOWER(name) LIKE '%&$values[$i]%' ";
else
$str .= "AND LOWER(name) LIKE '%$values[$i]%' ";
}
$query = "SELECT * FROM table WHERE ". $str . " LIMIT 7";
あなたが何か提案はありますか?
TXです。
を** WARNING **:これは、いくつかの深刻な[SQLインジェクションのバグ]を持っている(http://bobby-tables.com/) '$ _GET理由'クエリ内でデータが使用されます。可能な限り**準備文**を使用してください。これらは[mysqli](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[PDO](http://php.net/manual/)で行うのはかなり簡単です。 en/pdo.prepared-statements.php)ここで、ユーザが提供するデータは '?'または ':name'のインジケータで指定され、後で' bind_param'や 'execute'を使ってデータを入力します。 **決して '$ _POST'または' $ _GET'データを直接クエリに入れないでください。 – tadman
@freewindは私の答えを助けましたか? – divix