2016-04-23 22 views
-4

私は4列のpack_detailsというテーブルを持っています。私は既存のテーブルに新しいデータを挿入しようとしています。誰かが私のコードで何が間違っているのか、なぜ私は解析エラーがあるのか​​教えていただけますか?mysqlデータベース内の既存の行のデータを更新します。

$sql_query = "UPDATE pack_details SET $delivery_date = $_POST["delivery_date"], $delivery_time = $_POST["delivery_time"] 
WHERE $delivery_building = $_POST["delivery_building"] 
AND $delivery_room = $_POST["delivery_room"]"; 
+0

どうしたのですか? –

+1

[PHP Parse/Syntax Errors]の重複可能性があります。どのようにそれらを解決する?](http://stackoverflow.com/questions/18050071/php-parse-syntax-errors-and-how-to-solve-them) –

+1

構文解析エラー:予期しない '"' (T_STRING)または変数(T_VARIABLE)または数値(T_NUM_STRING)を期待しています –

答えて

1

は、オプションの下からいずれかを試してみてください:

$sql_query = "UPDATE pack_details SET $delivery_date = '{$_POST['delivery_date']}', $delivery_time = '{$_POST['delivery_time']}' WHERE $delivery_building = '{$_POST['delivery_building']}' AND $delivery_room = '{$_POST['delivery_room']}'"; 

または

$sql_query = "UPDATE pack_details SET delivery_date = '".$_POST["delivery_date"]."', delivery_time = '".$_POST["delivery_time"]."' WHERE delivery_building = '".$_POST["delivery_building"]."' AND delivery_room = '".$_POST["delivery_room"]."'"; 

注:フィールド名は$が含まれていない場合、クエリでフィールド名から$を削除します。たとえば。 "$ delivery_date"は "delivery_date"にする必要があります。

提案:ビルドに文字列連結を使用する代わりに、バインドパラメータを使用して値をクエリに渡す必要があります。 SQLインジェクションやコードの見栄えを防ぐのに役立ちます。

+0

アドバイスありがとうございました... SQL構文にエラーがあります。正しい構文が使用できるMariaDBサーバーのバージョンに対応するマニュアルを確認してください。' delivery_time = WHERE delivery_building = AND delivery_room = 'でl 1.文章のこの部分に何が問題なのですか? –

+0

文字列と日付タイプのフィールドに引用符を追加してはいけません。どのクエリを試しましたか? – Krunal

+0

$ sql_query = "UPDATE pack_details SET delivery_date = $ _POST [delivery_date]、delivery_time = $ _POST [delivery_time] WHERE delivery_building = $ _POST [delivery_building] AND delivery_room = $ _POST [delivery_room]"; –

関連する問題