由于某些原因,在将数据插入数据库时,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';
}
?>
答案 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手册页解释了原因。