【问题标题】:PHP halted on mySQL error, however the INSERT has been recorded into databasePHP 因 mySQL 错误而停止,但 INSERT 已记录到数据库中
【发布时间】:2014-11-11 09:14:18
【问题描述】:

正如标题所说,我收到两个错误,并且 INSERT 已被记录/接受。 这是mySQL:

$anvSQL = "
    INSERT INTO members (login, date) 
    VALUES('GRFU25F9J8P5P3rYIDUP', '2014-11-11 09:59:56')
";

if (!mysqli_query($con, $anvSQL))           
{
    die('Error: ' . mysqli_error($con));
}       
else
{
    echo "<br>1 record added";
}

字段登录是文本,日期是日期时间格式。 这是完整的错误信息:

添加了 1 条记录 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“'2014-11-11 09:59:56')' 附近使用正确的语法

【问题讨论】:

  • 查询似乎没问题。你有在那个表上运行的触发器吗?
  • 你真的可以使用date 作为列名而不用反引号引用它吗?
  • @ThiefMaster:当然——这不是保留字:dev.mysql.com/doc/refman/5.5/en/reserved-words.html
  • 并且由于插入有效,它必须是另一个插入或从该插入运行的触发器。
  • @ThiefMaster MySQL 允许将某些关键字用作不带引号的标识符,因为许多人以前都使用过它们。 date 就是其中之一

标签: php mysql


【解决方案1】:

我完全使用了您的架构并且它可以工作(MySQL 服务器版本:5.5.40)

mysql> create table members(login text, date datetime);
Query OK, 0 rows affected (0.40 sec)

mysql> INSERT INTO members (login, date) 
    ->     VALUES('GRFU25F9J8P5P3rYIDUP', '2014-11-11 09:59:56');
Query OK, 1 row affected (0.28 sec)

即使official documentation 陈述了date 的含义:

MySQL 允许将某些关键字用作不带引号的标识符,因为 许多人以前使用过它们。

重命名您的列名很有用,正如question. 的答案中提到的那样

【讨论】:

  • 我在字段名称上加了标尺,但没有帮助。我现在将尝试更改字段名称。
  • 您是否像我一样定义了表格列(我根据您的问题运行)。重命名您的日期列。另外,很高兴提及您的 MySQL 版本。 @Mansari
  • PHP 版本 5.2.5 。更改名称也无济于事。我认为它是另一回事。
  • 重命名列后,是否出现同样的错误?
  • 我发现了问题所在。我在主页中有几个“包含”页面,它们执行不同的任务。其中一个在“错误”的地方呈现了错误消息。现在我已经以正确的方式对任务进行了排序。谢谢大家的考虑。
猜你喜欢
  • 2012-02-07
  • 2014-01-03
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多