我无法使用INSERT INTO与php一起工作

时间:2012-11-04 18:58:59

标签: php sql

我真的不知道我做错了什么。所有其他查询(SELECT-queries)工作没有任何问题,但这似乎不起作用。有什么想法吗?

<?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 个答案:

答案 0 :(得分: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保留字here

的完整列表

答案 1 :(得分:3)

您需要反向勾选名为“from”和“to”的列,或将列重命名为非保留字。这将会咬你和其他任何人在屁股上永远查询这张桌子,所以我倾向于重命名。

`from`, `to`

请向众神做出承诺,你永远不会将列命名为db或再保留一个mysql保留字。

答案 2 :(得分: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());

然后您将看到问题所在。

答案 3 :(得分:1)

检查某些消息栏上是否有唯一索引。