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