2011-01-31 7 views
1

実行したいUPDATEクエリがあります。複数のWHERE句のヘルプが必要です

しかし、データベース内の数量を更新するには、2つの条件を満たす必要があります。

最初に、sessionsid()はsessionid列のsessionidの1つと一致しなければならず、次に、製品の説明はsessionidに対応する製品の説明と一致しなければなりません。

は、ここで私が持っているものです。

mysql_query(UPDATE cart 
       SET quantity = $q, 
      WHERE sessionid = "'.session_id().'" 
       AND description = $d') or die(mysql_error()); 

は今、それは私に次のエラーを与えている:

You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE sessionid="bqlbh5rdogbhmq70skhtkbvmb0" AND description=$d' at line 1

は、しかし、私はストレートW3Schoolsのからこの更新クエリをコピーしているので、それが正しくなければなりません、 右?助けを借りていただければ幸いです。

+0

なぜあなたはMySQLのドキュメントよりもw3schoolsを信頼しますか? –

+0

**あなたが理解しなければならない最初の最も重要なことは、**これは更新クエリではありません。これはPHPコードです。 PHPコードとSQ​​Lコードを区別する方法を学ぶ必要があります。それ以上移動しない場合は、 –

+2

@Col。真剣に駄目になってしまいました...投稿されたコードの95%が実際にはSQLクエリです。 BFDがPHPから呼び出された場合。あなたはそのようなトロルです、私はあなたに何かの担当者がいることを驚かせます。 – profitphp

答えて

0

,(カンマ)を削除します。

mysql_query("UPDATE cart SET quantity = $q WHERE sessionid='" .session_id(). "' AND description = '$d'") or die(mysql_error()); 
+0

申し訳ありませんが、これも私にエラーが表示されます:**あなたのSQLにエラーがあります構文; 'WHERE sessionid =' bqlbh5rdogbhmq70skhtkbvmb0 'AND description =' '' 1行目** –

+0

の近くで使用する正しい構文については、MySQLサーバーバージョンに対応するマニュアルを参照してください。つまり、 '$ d'変数は空です。 – singles

+0

ええ、そうです。しかし、print_f()を実行して$ dの内容をページに出力するので、実際には空ではありません。それは私には意味がありません。 PHPがまだページにそれを印刷することができるとき、どのようにmysqlが空であると思うでしょうか? –

3

エラーはWHEREステートメントの前に '、'記号があるために発生します。正しいクエリは次のようになります。

mysql_query("UPDATE cart SET quantity = " . $q . " WHERE sessionid = "' . session_id() . '" AND description = " . $d . "") or die(mysql_error());

+0

+1:あなたは最初だった –

+0

私はそれを取った、今これは言う: '不明な列' 'どこの句で' $ d '** ---ええと!なぜPHPエラーはあまりにも謎めいているのですか? –

+0

@Lucifer元のクエリにも一重引用符がありません。あなたは '$ d''と書いています。これは '$ $'でなければなりません。つまり、PHPのエラーではない – ubiquibacon

1

それがそのようになっているはずです$q

+0

ありがとう、lweller –

0

はまた、あなたはここに単一引用符に問題がある.'" AND description=$d') $ dは解析されません。これにより、間違ったSQLクエリが発生します。 、ないリテラルの$ dの二重引用符に単一引用符を変更するか、単なる文字列が$dの値を追加する.を追加使用

例:

$a = 5; 
$b = 'a is $a'; // a is $a; 
$c = "a is $a"; // a is 5 
1

あなたはひどくフォーマットされて貼り付けられているコード、およびIあなたのアプリで使われているコードを疑ってください。

$sql = sprintf(
    "UPDATE `cart` SET `quantity` = '%d' WHERE `sessionid` = '%s' AND `description` = '%s'", 
    $q, 
    session_id(), 
    $d 
); 
mysql_query($sql); 
+1

+1いいフォーマットです。これにより、多くのエラーが防止されます:) @Radoslav Georgievの前に、あなたのコードにはカンマでエラーがあります。 –

+0

@Radoslav Georgievですが、エラー処理が不十分で画面に収まりません。 –

+0

Radoslav Georgiev:gone – dogmatic69

関連する問題