我有一个脚本,当我提交它时,我提交了一些输入到MySQL数据库的字段,现在它成功通过,但是如果其中一个字段有撇号,它永远不会被插入到数据库中。我可以修改什么来实现这个功能?插入MySQL时的撇号问题
if ($_POST) {
$name = trim($_POST['your_name']);
$email = trim($_POST['your_email']);
$answers = $_POST['answers'];
$i = 0;
foreach ($answers as $a) {
if (trim($a))
$i++;
}
if ($name && $email && $i >= 40) {
$array = array();
$q = mysql_query("select * from fields");
while($f = mysql_fetch_array($q))
$array[$f['label']] = $answers[$f['ID']];
$array = serialize($array);
$time = time();
$ip = $_SERVER['REMOTE_ADDR'];
$token = md5($time);
$result = mysql_query("insert into data (submit_name, submit_email, submit_data, submit_confirm, submit_time, submit_ip, submit_token)
values ('$name', '$email', '$array', '0', '$time', '$ip', '$token')");
这就是为什么'mysql_query'函数应该可能从PHP中删除。只要有可能,几乎**总是**,请使用[预先准备的语句](http://php.net/manual/en/pdo.prepared-statements.php)。您没有任何理由将用户输入的文本直接放入SQL中。 – tadman 2012-01-13 16:30:29
核心开发团队拼命想要杀死mysql/mysqli,但网络上有**这么多**可怕的过时“教程”,它会破坏**这么多**现有的垃圾代码。 – rdlowrey 2012-01-13 16:32:15
我一直在这里更频繁地观看MySQL标签,我非常害怕人们对SQL转义的无知。这就像他们甚至懒得提及它。在一个公正的世界中,编写这样的代码将会是一场**大罪行**。 – tadman 2012-01-13 16:34:04