我真的把头发拉出来了.我在自建的php应用程序上有一个简单的评论部分,如果我抓住$ _GET参数,我只想添加一个新行.但无论我如何构建MySQL插入请求,我都会收到错误.
这是我到目前为止:
if(isset($_GET['r'])){
$replyid = mysql_real_escape_string($_GET['r']);
$sentnow = date("Y-m-d H:i:s");
mysql_query("INSERT INTO eis_inbox (messageid, toid, from, contact, seen, message, date) VALUES (NULL, '".$replyid."', 'TESTUSER', 'CONTACTINFO', '0', 'MESSAGE', '".$sentnow."'") or die(mysql_error());
echo '<meta http-equiv="refresh" content="0;/messages">';
}
Run Code Online (Sandbox Code Playgroud)
我的MySQL数据库字段被称为完全相同:messageid(auto_increment),toid(int11),from(varchar255),contact(varchar255),seen(int3),message(text)和date(timestamp/CURRENT_TIMESTAMP).
执行上面的页面,让我们说"index.php?r = 777"应该,正如我所看到的,用一个新行填充我的MySQL:
messageid = (AUTO_INCREMENT)
toid = 777
from = TESTUSER
contact = CONTACTINFO
seen = 0
message = MESSAGE
date = 2013-01-17 11:50:01
Run Code Online (Sandbox Code Playgroud)
相反,我收到以下错误:
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 'from, contact, seen, message, date) VALUES (NULL, '1', 'TESTUSER', 'CONTACTINFO'' at line 1
Run Code Online (Sandbox Code Playgroud)
"error_reporting(E_ALL)"显示相同的错误.
我已经研究了好几天了,而我却找不到错误......也许我是盲目的,错过逗号或结尾标签或其他东西.有任何想法吗?
因为您使用保留字(来自和日期)作为列名称.
用``包裹它们
即:
INSERT INTO eis_inbox (`messageid`, `toid`, `from`, `contact`, `seen`, `message`, `date`)
Run Code Online (Sandbox Code Playgroud)