0

パッケージの全リストがあり、ユーザーがチェックボックスを使用して選択し、パッケージを比較できるようにします。ユーザーが選択した後、チェックボックス配列から取得した packages_id を使用して、すべてのパッケージ データを .PDF ファイルに表示します。配列を分離して mysql select に挿入するにはどうすればよいですか?

$_POST['compare'] の出力: [14,15,16]

Mysql クエリ:

$packages=mysql_query(" 
select * 
from package 
where id in (" . implode(',', $_POST['compare']) . ") 
LIMIT 4");
4

2 に答える 2

2

これはあなたのために働くはずです

mysql_query("
    select *
    from package
    where id in (" . implode(',', $_POST['compare']) . ")
");

入力内容のサニタイズと検証に適切な注意を払う

于 2012-06-20T03:36:16.220 に答える
0

私があなたの質問を正しく理解していれば、あなたはその質問について助けを求めています.

if( empty( $_POST['compare'] ) )
     // stop execution because they didn't pick anything    

$packages = mysql_query(   
     " SELECT * FROM package WHERE id = '". 
        implode( "' OR id = '", $_POST['compare'] )
        ."'" );

http://us3.php.net/implodeを見てみ ましょう。PDO に変更を加えるまでは、これがクエリを作成するための最良の方法です。

クエリをまったくサニタイズしていないことに注意してください。チェックボックスの値とクエリの内容を制御していると思っていても、フォーム データを偽造するのは非常に簡単です。したがって、セキュリティ チェックを実装する必要があります。

それを行う簡単な方法は次のとおりです。

foreach( $_POST['compare'] as $compare ){
    $sql[] = sanitize( $compare );   
}

明らかに、サニタイズ機能が必要になります。それらはSOで簡単に見つけることができます。そして、クエリで $_POST['compare'] の代わりに $sql を使用できます。

于 2012-06-20T03:33:08.203 に答える