我现在大部分时间都在与数据库插入问题作斗争,所以现在是时候寻求帮助了。
我的网站上有一个评论表单,它是通过 ajax 提交和处理的,10 次中有 9 次它会完美运行,但我注意到当你输入&
字符时,它会过早地结束字符串,但仍然会在此之前将字符串插入数据库特点!
在我的评论部分,我允许在页面上显示时发布和突出显示代码片段,因此&
在任何发布的片段中都非常需要该字符来进行比较。
我正在使用 MySQLi 类,转义函数只是一个基本的 real_escape,而 mynl2br 只是一个自定义 nl2br 函数,这是将评论数据插入数据库的代码:
$name = $db->escape($_POST['name']);
$email = $db->escape($_POST['email']);
$url = $db->escape($_POST['web']);
$comment = $db->escape(mynl2br($_POST['comments']));
$script_id = $db->escape($_POST['script_id']);
$insertData = array(
'`author`' => ''.$name.'',
'`email`' => ''.$email.'',
'`url`' => ''.$url.'',
'`comment`' => ''.$comment.'',
'`script_id`' => ''.$script_id.'',
'`time`' => ''.time().''
);
if ($db->insert('script_comments', $insertData)) {
// sent success response back
exit;
}
谁能理解为什么 & 字符过早地结束了评论字符串?