【问题标题】:PDO is not passing html tagsPDO 没有传递 html 标签
【发布时间】: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你自己。
  • 我稍后会解决安全问题,首先我需要解决这个 html 标签问题。

标签: php mysql mysqli pdo phpmyadmin


【解决方案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'] 然后查询将不会执行
猜你喜欢
  • 1970-01-01
  • 2021-02-02
  • 2014-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多