我试图将数据插入到我的表中:
$userName="NewOrder";//use cookie to get name;
$selectCurrentUser=" SELECT user_id FROM users WHERE user_name='$userName'; ";
mysql_query(" INSERT INTO threads (topic ,date ,views ,user_id ,responses ,closed ,title ,close_voted ,content)
VALUES('$threadTopic', NOW(), 0, '$selectCurrentUser', 0, 'false', '$threadTitle', 0, '$threadContent');") or die(mysql_error());
mysql_close();我的第二次发言有一个错误。上面写着:
您的SQL语法有错误;请检查与MySQL服务器版本对应的手册,以获得在“NewOrder”附近使用的正确语法;“0”、“false”、“11111111111111111”、0、“22222222222222222222”在第2行。
我的桌子结构:
thread_id int(11) None AUTO_INCREMENT
topic varchar(50) date date None views int(11) None user\_id int(11) None responses int(11) None closed varchar(10) utf8\_unicode\_ci None title varchar(100) utf8\_unicode\_ci None close\_voted int(11) None content text utf8\_unicode\_ci None发布于 2011-10-23 15:17:33
这里有几件事:
user_name的字段。这是一个错误,或者您可能在寻找不是there?$selectCurrentUser=“(从用户中选择user_id =‘$userName’极限1)”;如果仍然失败,则建议先检索user_id (使用user_id),然后显式地将其传递给第二个查询。我会这样做:
$userName=“NewOrder”;//使用cookie获取名称;$selectCurrentUser = 0;//检索user_id first $result =mysql_query(“从用户选择user_id,其中user_name=‘$用户名’限制1");而($row= mysql_fetch_assoc($result)){ // set $selectCurrentUser到唯一检索到的id‘user_id’;} //将确切的user_id传递给第二个查询mysql_query(“插入到线程(主题、日期、视图、user_id、响应、关闭的、标题、close_voted、内容)值”(‘$线程topic’,NOW(),0,$selectCurrentUser,0,'false',‘false’,‘$ title’,0,‘$threadContent’)或死(mysql_error();mysql_close();
注意:我在第二个查询中从$selectCurrentUser中删除了引号.
发布于 2011-10-23 14:54:36
不要使用'$selectCurrentUser',而是使用($selectCurrentUser)。另外,我认为您不应该在第一个SQL语句的末尾添加分号。
编辑-为了清晰起见,我的意思是
mysql_query(" INSERT INTO threads (topic ,date ,views ,user_id ,responses ,closed ,title ,close_voted ,content)
VALUES('$threadTopic', NOW(), 0, '$selectCurrentUser', 0, 'false', '$threadTitle', 0, '$threadContent');") or die(mysql_error());应该按照如下方式编写(用圆括号替换$selectCurrentUser周围的单引号):
mysql_query(" INSERT INTO threads (topic ,date ,views ,user_id ,responses ,closed ,title ,close_voted ,content)
VALUES('$threadTopic', NOW(), 0, ($selectCurrentUser), 0, 'false', '$threadTitle', 0, '$threadContent');") or die(mysql_error());此外,以下语句
$selectCurrentUser=" SELECT user_id FROM users WHERE user_name='$userName'; ";应该删除第一个分号,如下所示:
$selectCurrentUser=" SELECT user_id FROM users WHERE user_name='$userName' ";发布于 2011-10-23 14:55:52
从错误消息中可以看出,它没有按照您预期的方式使用引号。
'NewOrder'; ', 0, 'false', '11111111111111111111111', 0, ' 22222222222222222222' at line 2
$userName="NewOrder";//use cookie to get name;
$selectCurrentUser=" SELECT user_id FROM users WHERE user_name='$userName'; ";
mysql_query(" INSERT INTO threads (topic ,date ,views ,user_id ,responses ,closed ,title ,close_voted ,content)
VALUES('$threadTopic', NOW(), 0, '$selectCurrentUser', 0, 'false', '$threadTitle', 0, '$threadContent');") or die(mysql_error());
mysql_close();您只将NewOrder指定为第一个语句,并将单引号放在后面--我认为您不需要在第一个SQL的末尾指定分号。
错误意味着它没有看到从$userName的末尾引号到$selectCurrentUser之后的0的代码。
您可以添加更多的引号和连接。像这样
$selectCurrentUser=" SELECT user_id FROM users WHERE user_name='".$userName."'"; 第二项声明也是如此。希望这能有所帮助。
https://stackoverflow.com/questions/7866829
复制相似问题