2012-12-29 211 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,你很好。