出于某些原因,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';
}
?>发布于 2014-03-12 06:36:20
addslashes()用于转义字符串。如果你有代码:
$lastname = "O'Bama";
$query = "SELECT name FROM users WHERE lastname='$lastname'";查询将产生错误,因为Bama将被视为SQL语句。为了防止出现这种情况,您可以使用addslashes(),以便
echo addslashes($lastname); // returns O\'Bama现在,您可以执行查询而不会出现任何错误,因为您的数据库将看到值为“O‘’Bama”。
发布于 2014-03-12 06:44:22
在处理数据库时使用addslashes()是非常糟糕的做法。由于您使用的是PHP扩展,因此应该使用mysqli_real_escape_string()对数据进行转义。addslashes()的PHP手册页面解释了其中的原因。
https://stackoverflow.com/questions/22338061
复制相似问题