【问题标题】:INSERT statement does not work from PHP Code, but works in PhpmyadminINSERT 语句在 PHP 代码中不起作用,但在 Phpmyadmin 中起作用
【发布时间】: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() 的输出。

标签: php mysql insert


【解决方案1】:

我不知道这是否是拼写错误,但是您的第一行代码末尾有一个丰富的),并且缺少一个分号。

如果您使用mysql_query() 仅带有一个参数,则它使用"the last link opened by mysql_connect()"。你确定你有一个开放的连接吗?

如果您确定您有一个打开的连接,您可以在调用mysql_query() 后随时尝试调用mysql_error() 以获取有关可能错误的更多信息。

编辑;回应其他答案;您的引号、撇号或反撇号没有任何问题。

【讨论】:

  • mysql_query($queryStr) 或 die(mysql_error());mysql_error 给了我一个错误,我没有在查询中声明的一个字段没有默认值。将直接在表中修复它。在我没有在查询中调用的每个字段都具有默认值之后,插入工作。您可以在数据库本身中设置默认值 - 您可以使用 PHPMyAdmin 来执行此操作。如果您转到表格并单击顶部的“结构”选项卡,然后单击相关字段的“编辑”链接(小笔),您有一个名为“默认”的选项 - 将下拉框设置为“按定义”,然后输入下面文本字段中的默认值。
猜你喜欢
  • 2013-05-03
  • 2016-05-31
  • 2012-02-17
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
相关资源
最近更新 更多