1

私は人々の名前を配列に格納する検索フォームに取り組んでいましたが、PHP で結果ページに IN 句を使用するクエリを作成したいと考えていました (それが最善の方法である場合は、別の方向に私を指摘してください)。基本的に、ページにはすべての名前のチェックボックスがあるため、1 つ、多く、またはすべての名前をチェックできます。implode 関数を使用してみましたが、これまでのところ成功していません。

$yourName = implode("', '", $_POST['Your_name']);

if($dutyReq=="All" && $yourName!="All" ) $query="SELECT * FROM talent_eas WHERE Your_name IN ('$yourName')";

それは大丈夫ですか?それはすべてのシナリオを処理しますか?PHPを始めたばかりで、何をやっているのかわかりません。特定の質問を検索してみましたが、IN 句があまり使用されていないようです。

4

3 に答える 3

1

はい、INの使い方です。いくつかの例を次に示します。

SELECT * FROM users WHERE name IN ('John','Jane');

SELECT * FROM some_table WHERE the_month IN ('January','April','September');

また、 SQL インジェクションについてもお読みください。

コメント:

内破の前に mysql_real_escape_string を使用する必要があります。したがって、コードは次のようになります。

$yourName = implode("', '", mysql_real_escape_string($_POST['Your_name']));
于 2012-09-10T16:25:16.860 に答える
0

SQLi を防止するいくつかの方法を次に示します。

# 1. Map each name with escape function
$yourname = implode("', '", array_map('mysql_real_escape_string', $_POST['Your_name']));

# 2. Use PDO with prepare statement (with placeholders e.g. (?, ?, ?)
$placeholders = array_fill(0, sizeof($_POST['Your_name']), '?');
$stmt         = $pdo->prepare('SELECT * FROM talent_eas WHERE Your_name IN ('.implode(', ', $placeholders).')';

$stmt->execute($_POST['Your_name']);
于 2012-09-10T16:46:47.053 に答える
0

使用できます

SELECT * FROM Talent_eas WHERE あなたの名前 IN ('シャイル','ジョティ');

Mysql インジェクションを読むことをお勧めします。そうしないと、コードが簡単にハッキングされる可能性があります

于 2012-09-10T16:27:43.333 に答える