【问题标题】:INSERT query PDO single quotation PDO ErrorINSERT 查询 PDO 单引号 PDO 错误
【发布时间】:2016-01-28 23:29:34
【问题描述】:

您好,我有这个查询,我将信息插入数据库。 提交表单按预期工作。但是,在输入的文本中使用 '(撇号)时, 我收到 PDOException SQLSTATE[42000] 语法错误或访问冲突:1064

$result = $conn->prepare("UPDATE `news_articles` 
                            SET `postedby`=:postedby,`title`=:title,
                                `short_title`=:short_title, 
                                `article_image`=:article_image,
                                `contents`=:contents,
                                `datetime`=:datetime,
                                `event_datetime`=:event_datetime,
                                `type`=:type 
                           WHERE `articleid`=:articleid");
    $result->bindParam(':articleid', $articleid);
    $result->bindParam(':postedby', $postedby);
    $result->bindParam(':title', $title);
    $result->bindParam(':short_title', $short_title);
    $result->bindParam(':article_image', $article_image);
    $result->bindParam(':contents', $contents);
    $result->bindParam(':datetime', $datetime);
    $result->bindParam(':event_datetime', $event_datetime);
    $result->bindParam(':type', $type);
    $result->execute();

有人知道这是为什么吗?

【问题讨论】:

  • 您知道是哪个字段导致了问题吗?以及包含撇号的数据是什么样的
  • 还有更多的错误,比如堆栈跟踪吗?
  • 不要这么认为 Phil.. 是的,它应该是 $contents,因为我们使用的是 TinyMCE 编辑器,所以当我们写一篇文章时,如果它包含一个撇号,它会在提交时显示错误,

标签: php mysql pdo


【解决方案1】:

我不是 100% 确定这一点,但是如果您使用 ->bindParam() 的第三个参数来告知它数据类型,那么您很可能只需要更正此问题

那就是具体

$result->bindParam(':contents', $contents, PDO::PARAM_STR);

但你应该在所有->bindParam() 调用中使用它

手册http://php.net/manual/en/pdostatement.bindparam.php

和参数常量http://php.net/manual/en/pdo.constants.php

【讨论】:

  • 成功了!所以即使没有显示其他错误,我应该定义什么类型的数据类型?我会尽快更新。谢谢 RiggsFolly
猜你喜欢
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 2012-02-04
  • 2015-08-23
相关资源
最近更新 更多