【发布时间】:2014-01-25 07:17:15
【问题描述】:
我正在尝试使用准备 PDO 语句进行插入,但它似乎并没有按照我希望的方式工作。这是我的代码:
$conn = new PDO('mysql:host=localhost;dbname=myDB', $username, $password);
$sql = "INSERT INTO posts (`text`,`name`) VALUES (:text,:username)";
$q = $conn->prepare($sql);
$q->bindParam(':text', $_GET['textField'], PDO::PARAM_STR);
$q->bindParam(':username', $_SESSION['myusername'], PDO::PARAM_STR);
$q->execute();
print_r($q->errorInfo());
问题是这没有做任何事情,我不知道为什么,我正在使用遵循 here 的指导方针来帮助我做到这一点。
编辑:当我使用 print_r 时,我收到以下 MySQL 错误:
Array ( [0] => 42000 [1] => 1064 [2] => 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 ''text','name') VALUES ('a','user')' at line 1 )
【问题讨论】:
-
TEXT是 MySQL 中的一种数据类型。试着把它放在蜱虫里。 -
当您激活某种
ERRMODE_SILENT时,您希望如何收到任何错误消息(这可能会帮助您解决问题)?即使在生产环境中也不要这样做。始终实施适当的异常处理。 -
@JohnConde 我刚刚做了,可惜没用
-
您应该收到查询错误。正如@John Conde 所说,
TEXT是 SQL 中的语法。print_r($q->errorInfo());会为您返回任何东西吗? -
禁用
errmode_silent。这就像把你的手指塞进你的耳朵里,然后“拉拉拉尔听不见你”。如果出现问题,请不要禁用会告诉您问题所在的工具。