【问题标题】:PDO exec error for int valueint 值的 PDO 执行错误
【发布时间】:2011-07-18 14:47:49
【问题描述】:

我正在尝试使用 PDO exec 保存 UNIX 时间戳,但遇到访问冲突:

check the manual that corresponds to your MySQL server version for the

在 '1300507025' 附近使用正确的语法

当我使用字符串时, exec 按预期工作。我需要怎么做才能使它与整数值一起使用?

这是声明

exec( "CREATE DATABASE $dbName" );

【问题讨论】:

  • 请包含触发此错误的代码。
  • 无论如何都不是“访问冲突”...
  • 您的数据库名称不能以数字开头。
  • @Jon:直接引用我的错误日志:访问冲突:1064 您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在“1300507025”附近使用的正确语法
  • 尝试在数据库名称中添加反引号?

标签: php pdo


【解决方案1】:

这是一个非常糟糕的主意,但您将需要使用反引号来创建数据库:

mysql> create database 123;
ERROR 1064 (42000): 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 '123' at line 1
mysql> create database "123";
ERROR 1064 (42000): 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 '"123"' at line 1
mysql> create database '123';
ERROR 1064 (42000): 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 ''123'' at line 1
mysql> create database `123`;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| 123                |
...

mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 5.0.77    |
+-----------+
1 row in set (0.00 sec)

【讨论】:

  • 谢谢查尔斯。我已经尝试过使用反引号,但这不起作用。我将只使用 MD5 哈希并完成它。谢谢。
  • 如果反引号不起作用,那么你做错了什么——正如我在上面演示的那样,它们似乎适用于纯数字数据库名称。另外,请记住,当标识符以数字开头时,会触发对标识符自动识别的限制。 md5 哈希仍然可以以数字开头。
【解决方案2】:

exec( "CREATE DATABASE \'$dbName\'" ); 只需将数据库名称单引号。

编辑:

这只有在你已经有的情况下才有效:

SET sql_mode='ANSI_QUOTES'; 

否则使用转义的反引号

【讨论】:

  • 谢谢马龙。这是错误:在 '\'1300509172\'' 附近使用的正确语法
  • 我可能会使用一个字符串。
  • dev.mysql.com/doc/refman/5.0/en/identifiers.html 检查那里的错误:mysql> CREATE TABLE "test" (col INT);错误 1064:您的 SQL 语法有错误... mysql> SET sql_mode='ANSI_QUOTES'; mysql> 创建表“测试”(col INT); MYSQL 想要 ` back tickmarks...你可以转义这些或设置上面的 SQL 模式。
猜你喜欢
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 2013-12-12
  • 2015-04-06
  • 2015-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多