0

これがPHPでの私のクエリです。IF RATEフィールドがNULLの場合、MYSQLテーブルにレコードが挿入されない可能性があります。私のクエリはここでは機能しません.WHEREの近くの構文をチェックすると言っています. どこでも問題なく動作します。私はPHPMYADMINを持っています。

$sql = "INSERT INTO `order`(`po_number`, `vendor_name`, `market`, `start_date`, `end_date`, `qty`, `rate`, `comment`, `media_type`, `sub_vendor`) VALUES ('$po_number1[$i]','$master_vendor1[$i]','$market1[$i]','$start_date1[$i]','$end_date1[$i]','$qty1[$i]','$rate1[$i]','$comment1[$i]','$media_type1[$i]','$sub_vendor1[$i]') WHERE `rate` IS NOT NULL";

どんな助けでも感謝します。ありがとうございました。

4

4 に答える 4

1

そのようなクエリにWHERE句を含めることはできません。INSERT INTO挿入クエリを実行する前に、条件ロジックを実行する必要があります。WHERE挿入クエリは新しい行を追加するため、定義上、句を評価する行はありません。UPDATEクエリをご希望ですか?

$errors = array(); // declare this before your loop

if($rate1[$i] == 0 || $rate1[$i] == null)
{
    // rate is 0 or null, add error
    $errors[] = 'Rate is invalid';
}
else
{
    $sql = "INSERT INTO `order`(`po_number`, `vendor_name`, `market`, `start_date`, `end_date`, `qty`, `rate`, `comment`, `media_type`, `sub_vendor`) VALUES ('$po_number1[$i]','$master_vendor1[$i]','$market1[$i]','$start_date1[$i]','$end_date1[$i]','$qty1[$i]','$rate1[$i]','$comment1[$i]','$media_type1[$i]','$sub_vendor1[$i]')";
    // execute $sql
}

ループが完了したら、エラーを表示できます。

<ul>
    <?php foreach($errors as $e): ?>
    <li><?php echo $e; ?></li>
    <?php endforeach; ?>
</ul>
于 2012-11-02T14:24:21.760 に答える
1

INSERTステートメントには が含まれていませんWHERE。を使用するか、UPDATEPHP を使用して挿入を変更する必要があります

于 2012-11-02T14:23:27.413 に答える
0

条件付き挿入のようなものはありません。挿入するものが正しいことを確認する必要があります。したがって、セットをループして、基準を満たす行のみを挿入します

于 2012-11-02T14:24:07.393 に答える
0

接続を作成してクエリを発行するオーバーヘッドが発生する前に、PHP でこれを確認することをお勧めします。

if (isset($rate1[$i])) {
    // prepare and execute the insert
} else {
    echo 'Rate cannot be null';
}
于 2012-11-02T14:25:35.863 に答える