【发布时间】:2014-08-12 23:40:01
【问题描述】:
所以我有一些数据要尝试使用 PDO 输入。这是我的代码的样子
$DATA = $con->prepare("INSERT INTO users (key, ip) VALUES (:key, :ip)");
$DATA->bindValue(':ip', $ip, PDO::PARAM_STR);
$DATA->bindValue(':key', $key, PDO:PARAM_STR);
$DATA->execute();
问题是它不会进入数据库。只有当我做一个这样的值时它才有效
$DATA = $con->prepare("INSERT INTO users (key) VALUES (:key)");
这正常吗?我是否为每个变量做单独的陈述?
我的数据库
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| key | varchar(255) | YES | | NULL | |
| ip | varchar(255) | YES | | NULL | |
+-------+------------------+------+-----+---------+----------------+
我得到了错误
致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 /Users/mike/Desktop/Mail/index.php:37 中的 'key, ip) VALUES ('53a786577de99', 'E6pdpExv6q363baea9cba210afac6d7a556fca596e30c' at line 1' at line 1' 附近使用正确的语法堆栈跟踪:#0 /Users/mike/Desktop/Mail/index.php(37): PDOStatement->execute() #1 {main} 在第 37 行的 /Users/mike/Desktop/Mail/index.php 中抛出
【问题讨论】:
-
我没有注意到这一点。但只是修好了。它仍然不起作用......@Chris
-
不。数据库也包含所有行。当我在发布代码后尝试执行
echo时,它不会返回结果。当我删除PDO:PARAM_STR时,我可以在它之后运行代码。 @zerkms -
@user302975: "nope" --- 你怎么知道的?我没有看到您正在检查任何 PDO 错误
-
@user302975:除非您的 PDO 设置为抛出错误,否则不会。这里的情况可能不是这样。检查stackoverflow.com/a/2104519/251311
-
KEY是reserved word,必须用反引号括起来。