【发布时间】:2012-02-15 10:40:30
【问题描述】:
我遇到了来自 php 的 SQL 查询问题
查询是
mysql_query("INSERT INTO `pwn_users` (`name`,`email`,`password`) values ('$chosen_name','$chosen_mail','$chosen_pw')"))
当我像这样打印查询文本时:
print "INSERT INTO `pwn_users` (`name`,`email`,`password`) values ('$chosen_name','$chosen_mail','$chosen_pw')";
它会像这样返回我的输入:
INSERT INTO `pwn_users` (`name`,`email`,`password`) values ('Testuser','testmail@test.us','testpass')
数据虽然没有插入到表中。但是当我将最后一条语句直接复制到 phpmyAdmin 的 SQL Querybox 中时,它会正确插入。
【问题讨论】:
-
你有一个开放的连接吗?
-
除了您可能想要使用准备好的语句之外,您是否与正确的用户联系?测试 select 是否正常工作,也许你有一些连接问题。您收到任何错误消息吗?
-
如果可以,请尝试使用 PHP 的
mysqli库而不是mysql。 -
或者更好地使用 PDO(虽然这不是答案)。
-
+1 @PeeHaa 的评论,展开:您必须在调用
mysql_query()之前调用mysql_connect(),您必须使用有权修改目标数据库/表的用户帐户进行连接,并且您必须在查询中指定数据库名称或在查询之前调用mysql_select_db()。出于调试目的,您可以通过执行mysql_query($queryStr) or die(mysql_error());找出查询失败的原因 - 但从不在生产环境中显示mysql_error()的输出。