首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >addslashes()插入到数据库时没有斜杠

addslashes()插入到数据库时没有斜杠
EN

Stack Overflow用户
提问于 2014-03-12 06:29:58
回答 2查看 1.4K关注 0票数 0

出于某些原因,addslashes在向数据库中插入数据时不会添加斜杠。我以为我用对了,但显然不是...当我提交包含单引号或双引号的数据时,它只是直接发送准确的字符串。有没有关于如何让它工作的想法?

代码

代码语言:javascript
复制
<?php
//include db connect
  include ("db_con.php");

//start session
  session_start();

//set variable names
  $username = $_SESSION['username'];
  $entry = addslashes($_POST['entry']);
  $uri = $_SERVER['HTTP_REFERER'];

//send chat
  $query = mysqli_query($con, "INSERT INTO chat (username, entry) VALUES
                                                ('".$username."', '".$entry."')"); 
  if ($query) {
    header('Location: '. $uri);
  } else {
    echo 'Chat entry failed for an unknown reason - Please go back and try again';
  }
?>
EN

回答 2

Stack Overflow用户

发布于 2014-03-12 06:36:20

addslashes()用于转义字符串。如果你有代码:

代码语言:javascript
复制
$lastname = "O'Bama";

$query = "SELECT name FROM users WHERE lastname='$lastname'";

查询将产生错误,因为Bama将被视为SQL语句。为了防止出现这种情况,您可以使用addslashes(),以便

代码语言:javascript
复制
echo addslashes($lastname); // returns O\'Bama

现在,您可以执行查询而不会出现任何错误,因为您的数据库将看到值为“O‘’Bama”。

票数 2
EN

Stack Overflow用户

发布于 2014-03-12 06:44:22

在处理数据库时使用addslashes()是非常糟糕的做法。由于您使用的是PHP扩展,因此应该使用mysqli_real_escape_string()对数据进行转义。addslashes()的PHP手册页面解释了其中的原因。

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

https://stackoverflow.com/questions/22338061

复制
相关文章

相似问题

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