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`

请向众神保证,您将永远不会再命名列或 db mysql 保留字。

于 2012-11-04T19:02:39.040 回答
4

您正在使用保留字 from, to 作为您的字段名称。用反引号而不是引号转义它们。

      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 回答