-1

そのようなクエリを取得しました:

 UPDATE trails SET route = '$route', distance = '$distance', desc = '$description' WHERE route='$route'

このエラーが返されます:

 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 'desc = 'Bla bla bla' WHERE route='London to Dublin'' at line 1

ありがとう!。

4

4 に答える 4

3

DESCは予約済みキーワードです。バックティックを使用して引用します。

UPDATE trails SET route = '...', distance = '...', `desc` = '...' WHERE route = '...'

ところで、コードにはもっと深刻な問題があります。たとえば、SQL インジェクション。

于 2012-12-20T08:59:07.253 に答える
2

[これは不正解です。] 文字列をクエリに渡す前にエスケープする必要があります。

ここを参照してください: http://php.net/manual/en/mysqli.real-escape-string.phpまたは古い廃止された関数を使用している場合はここを参照してくださいhttp://php.net/manual/en/function.mysql-リアルエスケープ文字列.php

于 2012-12-20T08:56:03.697 に答える
1

最初 :

そのように変数をエスケープします

  $route = mysqli_real_escape_string ($route ) ; // if you are using mysqli
  $route = mysql_real_escape_string ($route ) ; // if you are using mysql

 and so on .. with other variables

これを試してください:

   UPDATE trails SET route = '".$route."', distance = '".$distance."', `desc` = '".$description."' WHERE route='".$route."'

obs : descmysql の予約済みキーワードなので、他の単語を使用するか、バッククォートを作成してください。

于 2012-12-20T09:00:49.453 に答える
0

これを試して

mysql_query("UPDATE trails SET `route` = '".mysql_real_escape_string($route)."', `distance` = '".mysql_real_escape_string($distance)."', `desc` = '".mysql_real_escape_string($description)."' WHERE route='".mysql_real_escape_string($route)."'");
于 2012-12-20T09:01:01.013 に答える