0

私のサイトにはフィルターがあります。別のサイトの製品を表示するための複数のチェックボックスがあります。ユーザーが2つのチェックボックスを選択すると、私のクエリは

Select * from new_deals where provider_id IN (2,8);

正常に動作しています。

しかし、ユーザーがチェックボックスを選択しないと、

Select * from new_deals where provider_id IN ();

エラーを出します。空の結果を返すべきだと思っていました。

このコードを削除したくありませんでした。

そのため、チェックボックスがチェックされていない場合は解決策が必要です。この IN(); を処理します。

したがって、チェックボックスがチェックされていない場合は、括弧に何を入れる必要があるかを知る必要があります。つまり、 IN ();

あなたたちは天才です。

前もって感謝します。

4

6 に答える 6

11

あなたはphpを使用しているので、ここに解決策があります:

if (isset($_POST['checkboxfieldname']) and count($_POST['checkboxfieldname']) > 0) {
     // run query
} else {
  // dont run query
}
于 2013-01-10T10:09:02.340 に答える
1

私の理解によると、チェックボックスが選択されていない場合、問題はSQLがエラーを生成していることです。

使わない理由

NULL

チェックボックスが選択されていない場合、コードは

Select * from new_deals where provider_id IN (NULL);

私はこれを試しましたが、エラーは発生しません。

ありがとう。

于 2013-01-10T10:11:06.410 に答える
0

0がDBにないIDである場合は、WHERE Provider_id IN(0)を使用できます。これは地獄のように醜いので、代わりにクエリをまったく実行しないでください。

于 2013-01-10T10:09:25.120 に答える
0

ID が選択されていない場合は、クエリを実行しない方がよい場合もありますが、これが不可能な場合や、コードがより混乱する場合があります。したがって、代わりに値NULLをリストに追加するだけです-NULL何も一致しないため(他の s でも)、または存在する可能性のある他の任意の値をNULL使用するよりも適しています。0

// IDs got from checkboxes
$ids = array("10", "12");

// Add in NULL
$ids[] = "NULL";

$values = implode(",", $ids);
$sql = "Select * from new_deals where provider_id IN ($values)";
于 2015-06-18T11:56:38.407 に答える
0

検索を使用する場合は、この方法を使用してください。

SQLクエリの追加条件を入れる変数を作成します。あなたの場合、リクエスト変数が provider_id であるとしましょう。

$QueryAddons = "";

if(isset($_REQUEST['provider_id']) && !empty($_REQUEST['provider_id'])){
     $QueryAddons .= "AND provider_id IN ".implode(",",$_REQUEST['provider_id'])."";
}

クエリステートメントは次のようになります。

  $selectStmt = "Select * from new_deals where 1=1 ".$QueryAddons;

お役に立てれば。

于 2013-01-10T10:46:33.283 に答える
-1

このようにしてください

$delim  =   "";
$whereCondition =   (count($_POST['multiple_check']) > 0) ? " where provider_id IN (" : "";

foreach ($_POST['multiple_check'] as $multipleCheckbox) {
     $whereCondition    .=  $delim.$multipleCheckbox;
     $delim =   ",";
}
$whereCondition .=  (count($_POST['multiple_check']) > 0) ? ")" : "where provider_id IN (NULL)";

if ($whereCondition != "") {
    $query  =   "Select * from new_deals {$whereCondition}";
}
于 2013-01-10T10:10:06.403 に答える