2012-12-29 253 views
0

即时得到这个错误错误: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 'to, from, message, read) VALUES ('3','2','testmessage','0')' at line 1.MySql语法错误?

的Ive在这几个小时,这里什么也没有发现在SO或任何其他网站。预先感谢您的帮助。下面是一个简单的消息传递系统的文件。

<?php 
session_start(); 
$id = $_SESSION['id']; 
$msg = $_POST['message']; 
$theirs = $_POST['value']; 
$read = 0; 

$con = mysql_connect("127.0.0.1","root",""); 
mysql_select_db("test", $con); 
if (!$con) 
    die('Could not connect: ' . mysql_error()); 

$sql = "INSERT INTO messages (to, from, message, read) VALUES ('$theirs','$id','$msg','$read')"; 

if (!mysql_query($sql,$con)) 
    die('Error: ' . mysql_error()); 

mysql_close($con); 
+1

您的代码容易受到SQL注入攻击! – markus

+3

不要使用已弃用,不安全,效率低下的mysql_ * API,而应将mysqli或PDO与预准备语句一起使用。 – markus

+0

我知道,这只是一个测试。病后逃跑,并建立vallidation和参数。我只是想开始somwhere –

回答

5

tofromread是在MySQL reserved words。引述他们反引号

INSERT INTO messages (`to`, `from`, `message`, `read`) VALUES ('$theirs','$id','$msg','$read') 
+0

不错,好点! – vodich

+0

'read'也是一个保留字。 – Arjan

+0

@Arjan谢谢,修复。 –

1

fromtoread是MySQL的保留字。最好不要将它们用作列名(否则必须用反引号括起来),但使用其他列名。

而不是from您可以使用sender,并使用recipient而不是to。还将read更改为is_read,你很好。