Php 在某些特殊情况下,数据不会被插入?

Php 在某些特殊情况下,数据不会被插入?,php,mysql,database,tinymce,htmlpurifier,Php,Mysql,Database,Tinymce,Htmlpurifier,这是我正在使用的代码 if (!empty($_REQUEST['content'])&&!empty($_REQUEST['title'])&&!empty($_REQUEST['writer'])) { $title = $_POST['title']; $content = $_POST['content']; $writer = $_POST['writer']; require_once 'htmlpurifier/library/HTMLPurifie

这是我正在使用的代码

if (!empty($_REQUEST['content'])&&!empty($_REQUEST['title'])&&!empty($_REQUEST['writer'])) {
$title = $_POST['title'];
$content = $_POST['content'];
$writer = $_POST['writer'];
require_once 'htmlpurifier/library/HTMLPurifier.auto.php';
$purifier = new HTMLPurifier();
$pure_content = $purifier->purify($content);
$entity_content = htmlentities($pure_content);
$entity_content = mysql_real_escape_string($entity_content);
mysql_query("INSERT INTO stories (TITLE, WRITER, CONTENT, UPVOTE, DOWNVOTE) VALUES ('$title', '$writer', '$content', 0, 0)"); 
现在,经过一些测试,我发现每当我键入一个撇号时,如果它是,那么值就不会被插入表中。我如何防止这种情况?是否存在其他可能导致此问题的特殊字符。 以下是我正在进行的工作:

编辑

我已经更新了这两行代码

$add_content = "INSERT INTO stories (TITLE, WRITER, CONTENT, UPVOTE, DOWNVOTE) VALUES ('$title', '$writer', '$content', 0, 0)"; 
$result = mysqli_query($mysqli, $add_content) or die(mysqli_error($mysqli));
还有什么我需要改变的吗

第二次更新

我也更改了这个代码

$con = mysqli_connect($db_hostname,$db_username,$db_password);
if (!$con)
{
die('Could not connect: ' . mysqli_error());
}
mysqli_select_db($db_database, $con);

还有别的吗?谢谢您的帮助。

您只需在插入时放入此文件即可

$title = addslashes($_POST['title']);
$content = addslashes($_POST['content']);
$writer = addslashes($_POST['writer']);
在展示时

stripslashes($VariableName)

希望这对您有所帮助。

不要使用mysql函数。。请检查这个我不知道,但我认为错误是因为您没有使用编码内容$entity\u内容进行查询。。。请不要使用mysql函数。如果它是一个真正的撇号,而不是一个单引号,那么它可能与您的列/表设置有关。看看它是否设置为UTF-8,如果不允许使用某些字符,有时它将无法输入或输入所有funky-like。我已经更新了代码以在数据库中插入值。这是正确的还是我需要将其更改为其他内容?您也需要更改与数据库的连接。目前它正在工作。非常感谢。它可能会带来任何安全问题吗?不,不,根本没有安全问题。我建议告诉人们使用媒体的逃逸机制,而不是碰巧起作用的东西在这种情况下,mysql[i]\u real\u escape\u string比addslashes更好,因为后者取决于mysql服务器的设置。更好的方法是引入参数化预处理查询。