我需要帮助!
我有一个网站管理页面上的表单,业主填写他的项目和得到添加到mysql数据库,但有时数据包含单引号或双引号,所以它不会添加到数据库。
我试过使用地址斜杠,但它仍然不起作用。
这是我试过的代码
$atitle = addslashes($_REQUEST['atitle']);
$acontent = addslashes($_REQUEST['acontent']);
$query = "INSERT INTO projects VALUES (NULL, '$atitle', '$acontent', '$remote_file', '$remote_file1', '$remote_file2')";
$result = mysql_query($query);
if(!$result){
$error = 'An error occured: '. mysql_error().'<br />';
$error.= 'Query was: '.$query;
echo $error;
die($message);
}
有谁能帮我一下吗? mysql_query是一个过时的PHP库的一部分,不再受支持。与数据库交互的更可靠的方法是mysqli。使用mysqli,您将能够使用预处理语句。预处理语句是验证输入并缓解此类问题(输入带有引号/标记)的一种方法。看一下这个例子:
$db = new mysqli("host","user","pw","database");
$stmt = $db->prepare("INSERT INTO projects VALUES (NULL, '?', '?', '?', '?','?')");
$stmt->bind_param('s', $atitle); // s means string in the first param
$stmt->bind_param('s', $acontent); // s means string in the first param
... // same for all other parameters in your query
$stmt->execute();
更多信息:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
我强烈推荐使用mysqli。它是当前的和受支持的。预处理语句是防御SQL注入和捕获此类错误的最佳方式。它将为您清理输入并考虑引号。
您可以尝试stripslashes()
取消引号字符串。更多详细信息请访问PHP文档网站。