0

何が間違っているのか本当にわかりません。他のすべてのクエリ(SELECTクエリ)は問題なく機能しますが、これは機能していないようです。何か案は?

<?php
session_start();
$host="*******"; // Host name 
$username="*******"; // Mysql username 
$password="*******"; // Mysql password 
$db_name="*******"; // Database name 
$from = $_GET['from'];
$to = $_GET['to'];

// Connect to server and select databse.
$con = mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name",$con)or die("cannot select DB");

mysql_query("INSERT INTO message('from', 'to', 'message', 'confirm') VALUES (2,3,'would like to add you as a friend',1)");

echo'The request has been sent.';
4

4 に答える 4

4

'from'および'to'という名前の列をバックティックエスケープするか、列の名前を予約されていない単語に変更する必要があります。これはあなたと他の誰かがこのテーブルを永遠に突き刺すのを噛むことになるので、私は名前を変更することに傾倒します。

`from`, `to`

神との約束をしてください。列に名前を付けたり、mysqlの予約語をdbしたりすることは二度とありません。

于 2012-11-04T19:02:39.040 に答える
4

フィールド名として、からへの予約語を使用しています。引用符ではなく、バッククォートでエスケープします。

      mysql_query("INSERT INTO message(`from`, `to`, `message`, `confirm`) VALUES (2,3,'would like to add you as a friend',1)");

MySQLの予約語の完全なリストはこちらでご覧ください

于 2012-11-04T19:03:55.873 に答える
1

経験則として、or die(mysql_error());クエリの最後には常に組み込み関数を使用してください。これにより、クエリの実際の問題がクリアテキストで出力されるため、事前にカスタマイズしてください。この場合、コードを次のように変更します

mysql_query("INSERT INTO message('from', 'to', 'message', 'confirm') VALUES (2,3,'would like to add you as a friend',1)") or die(mysql_error()); 

そしてこれらを:

$con = mysql_connect("$host", "$username", "$password")or die(mysql_error()); 
 mysql_select_db("$db_name",$con)or die(mysql_error());

次に、問題が何であるかがわかります。

于 2012-11-04T19:01:33.017 に答える
1

メッセージの一部の列に一意のインデックスがあるかどうかを確認します。

于 2012-11-04T19:02:11.363 に答える