-2

我已经阅读了一些相关的问题,但我仍然不明白。所以我决定在这里发布一个问题。我有一个如下查询

$query = "INSERT INTO Table (q1,q2,q3,q4....q25) VALUES ('".$_POST['Q1']."',
'".$_POST['Q2']."',
'".$_POST['Q3']."',
'".$_POST['Q4']."'.....)";

mysql_query($query);

$_POST['Qx'] 值是从允许人们输入评论的调查中获得的。人们通常会喜欢“不要,不能,不......”这样的词。将数据插入表时,撇号会导致问题。

我已经阅读了一些建议方法的文章

mysql_real_escape_string($_POST['Q1'])

但是我有 25 个问题,其中一些甚至还有子问题。所以我有大约 70 个数据要输入到表格中。

有什么好的方法可以将撇号传递到 MySQL 表中吗?

4

1 回答 1

6

编辑:so I have around 70 data to input to the table.
对于 for 循环,70 是“无”;-)

for($i=1; $i<71; $i++) {
  $params[$i] = mysql_real_escape_string($_POST['Q'.$i], $link);
}

但是您可能需要考虑重新设计您的数据库表


您必须对参数进行编码/转义。如果是(已弃用的)mysql 扩展名,那就是mysql_real_escape_string()

$link = mysql_connect(...);
...
$query = sprintf(
    "
        INSERT INTO
            Table
            (q1,q2,q3,q4....q25)
        VALUES
            ('%s','%s' ...)
    ", 
    mysql_real_escape_string($_POST['Q1'], $link),
    mysql_real_escape_string($_POST['Q2'], $link)
    ...
);

mysql_query($query, $link) or die(mysql_error($link));

但最好使用支持的扩展,如 mysqli 或pdo
并查看准备好的语句

于 2012-08-28T10:47:55.303 回答