-3

私は何を間違えましたか?

$addedby=$_SESSION['id'];

$text="Subject: I want to add a New Phone Name :$name   Address :$address   Phone :$phone                 Category :$category   Email :$email   Website :$website    Details :$details";
$sql = "INSERT INTO messages SET  text='$text' , from='$addedby'";
mysql_query($sql) or die('Website Under Maintanance '.mysql_error());

Idは整数で、fromはvarchar(30)です。

何を間違えたのか教えてください。

エラーは:

SQL構文にエラーがあります。'from ='1'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

4

4 に答える 4

3

試してみてください

$sql = "INSERT INTO messages (`text`,`from`) values ('$text' , '$addedby')";

また、SQL インジェクションは非常に厄介で、DB で何かを行うのが非常に簡単になるため、SQL クエリを組み立てる前に、手動入力を常にクリーンアップする必要があることに注意してください...

于 2012-11-19T09:50:00.347 に答える
3

正しいINSERT構文は次のとおりです。

INSERT INTO messages(`text`, `from`) VALUES('$text', '$addedby');

注意:この方法のコードは、代わりに PDO または準備されたステートメントを使用するSQL インジェクションに対して脆弱です。詳細については、次の投稿を参照してください。

于 2012-11-19T09:50:18.587 に答える
1

あなたは何を間違えましたか:

  1. 質問に答えるのに十分な情報を提供しませんでした。
  2. mysql_query の代わりに PDO を使用しません。
  3. あなたの SQL は (おそらく) SQL インジェクションに対して脆弱です。
  4. or die例外の代わりにコンストラクトを使用します。
  5. ユーザーの MySQL エラー メッセージを表示します。
  6. INSERT クエリと UPDATE クエリの構文を混在させます。

必要なクエリは次のとおりです (SQL インジェクションを防ぐために $text と $addedby が適切にエスケープされている場合)

INSERT INTO messages (`text`, `from`) VALUES ('$text', '$addedby')
于 2012-11-19T09:53:54.630 に答える
1

$sql = "INSERT INTO messages SET text='$text' , from='$addedby'";

する必要があります

$sql = "INSERT INTO messages (`text`,`from`) VALUES('$text','$addedby')";

そして、Mysql の代わりにmysqliorを使い始めてください。PDOその非推奨です。

SQL に関するいくつかの例や内容を真剣に検討する必要があります。

于 2012-11-19T09:51:01.623 に答える