PDO 没有传递 html 标签

Posted

技术标签:

【中文标题】PDO 没有传递 html 标签【英文标题】:PDO is not passing html tags 【发布时间】:2016-04-30 15:33:41 【问题描述】:

我正在使用 PDO 并使用 pdo 在数据库中插入消息,但 html 标签没有通过。我的数据库连接是 utf-8 字符集,我的表单和数据库也是。 请参阅下面的代码如何使用 pdo 在 db 中添加 html 特殊标签。

      $query="INSERT INTO `message`(message) VALUES ('$message')";
      $dbc = dbc::instance();
      $result = $dbc->prepare($query);
      $result = $dbc->execute($result);

【问题讨论】:

PDO 对您的 html 标签一无所知。检查$message值并准备sql注入。 这很可能破坏了查询,因为$message 中有一个'。请仔细阅读如何正确使用prepare 语句。 危险:你很容易受到SQL injection attacks的影响,你需要defend你自己。 如果你look at what the database has to say about non-working SQL一般会有帮助 我稍后会解决安全问题,首先我需要解决这个 html 标签问题。 【参考方案1】:

我认为你错过了准备好的语句的要点和力量——尽管使用了准备好的语句,你仍然直接在 sql 语句中包含一个变量。以下内容显然没有经过测试,但应该(?)没问题 - 希望

  $message=$_POST['message'];

  $query="INSERT INTO `message` ( `message` ) VALUES ( :message );";
  $dbc = dbc::instance();
  $stmt= $dbc->prepare( $query );
  $result = $stmt->execute( array( ':message'=>$message ) );
  if( $result )
      /* ok */
  

抱歉,我写的太仓促了——我认为修改后的版本现在应该可以了。

【讨论】:

不工作。当我添加 $message=$_POST['message'] 然后查询将不会执行

以上是关于PDO 没有传递 html 标签的主要内容,如果未能解决你的问题,请参考以下文章

单击 HTML img 标签并使用 PDO 使用 jQuery/AJAX 更新 MySQL

pdo_mysql安装

PHP PDO fetch 和 foreach - 我没有得到第一列

有没有办法获取选项标签值并将其传递给车把中的助手?

有没有办法将现有标签传递给另一个类以使其闪烁

PDO 查询未在 PHP foreach 循环中返回结果