首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预准备语句输入到数据库中的文字引号包含前面的反斜杠

预准备语句输入到数据库中的文字引号包含前面的反斜杠
EN

Stack Overflow用户
提问于 2012-02-01 17:56:52
回答 3查看 541关注 0票数 0

我正在尝试为我的数据库创建一个简单的web界面,并且我正在使用准备好的语句,因为它们被认为可以防止SQL注入攻击。无论如何,我的问题是,如果我在表单中输入单引号或双引号并提交它,那么它们被输入到数据库中,前面有一个反斜杠,当从数据库中选择项时,它也会与它们一起打印出来。

那么,如何在数据库中输入文字引用,而不会因为prepare语句而获得前面的反斜杠呢?干杯。

代码语言:javascript
复制
<?php

$heading = $_POST['heading'];
$story = $_POST['story'];

$mysqli = new mysqli('localhost',$username,$password,'mydb');
if ($mysqli->connect_errno)
  echo "Failed to connect: Error (".$mysqli->connect_errno.") ".$mysqli->connect_error;

if (  !$stmt = $mysqli->prepare('INSERT INTO news (heading,story) VALUES (?,?)')  )
  echo "Prepare failed: Error (".$mysqli->errno.") ".$mysqli->error;

if (  !$stmt->bind_param('ss',$heading,$story)  )
  echo "Binding paramaters failed: (".$stmt->errno.") ".$stmt->error;

if (!$stmt->execute())
  echo "Execute failed: (".$stmt->errno.") ".$stmt->error;

$stmt->close();

?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-02 22:25:15

确保在php.ini中关闭了magic_quotes。

票数 1
EN

Stack Overflow用户

发布于 2012-02-01 17:59:20

您是否考虑过使用任何原生PHP函数,如mysql_real_escape_string()或addslashes()?

这些函数将本机避免插入潜在的危险字符串。

票数 0
EN

Stack Overflow用户

发布于 2012-02-01 18:00:45

使用htmlspecialchars()将特殊字符转换为HTML实体,或使用mysql_escape_string()转义所有«奇怪»符号

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9093837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档