addslashes()在插入数据库时​​没有斜杠

时间:2014-03-11 22:29:58

标签: php mysql

由于某些原因,在将数据插入数据库时​​,addslashes不会添加斜杠。我以为我正在使用这个权利,但显然不是......当我提交具有单引号或双引号的数据时,它只是发送正确的字符串。有关如何使其工作的任何想法?

代码

<?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';
  }
?>

2 个答案:

答案 0 :(得分:2)

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

$lastname = "O'Bama";

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

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

echo addslashes($lastname); // returns O\'Bama

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

答案 1 :(得分:1)

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