【问题标题】:PDO insert not insertingPDO 插入不插入
【发布时间】: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。这就像把你的手指塞进你的耳朵里,然后“拉拉拉尔听不见你”。如果出现问题,请不要禁用会告诉您问题所在的工具。

标签: php mysql pdo


【解决方案1】:

因为text是MySQL中的一种类型(看here),所以查询失败,因为语法错误。

在您的文本名称周围添加勾号,然后重试。

$sql = "INSERT INTO posts (text,name) VALUES (:text,:username)";
                           ----
                     This is the error.

【讨论】:

    猜你喜欢
    • 2014-08-12
    • 2014-11-26
    • 1970-01-01
    • 2011-11-10
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    相关资源
    最近更新 更多