0

可能重复:
如何在 PHP 中处理 SQL 查询中的单引号?

问候,我有一个用于应用程序的小脚本,它将问题答案保存到数据库中。脚本如下:

while(list($QKey,$QVal) = each($AppQuestions)) {
    $result2= mysql_query("
         INSERT INTO forum_app_answers (AID, AppID, Question, Answer)".
         " VALUES (NULL, '$AppID', '$Questions[$QKey]', '$QVal')"
     ) or die(mysql_error());

现在的问题是,如果有人在答案中写了 ' 字符,则数据不会被保存。对于简单的写作没关系。问题仅在于答案中包含 ' 。任何帮助将不胜感激

发生以下错误:您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解使用 Near 的 GF 的正确语法。渠道服务')' 在第 1 行

4

3 回答 3

2

使用准备好的语句。查找 PDO 并使用准备好的语句。

mysql_已弃用。

连接后$dbh = new PDO()

    $sql = 'sql';
    $stmt = $dbh->prepare($sql);
    $stmt->execute($params);
于 2013-02-02T21:52:54.873 回答
1

请执行下列操作:

$QVal = $mysqli->real_escape_string($QVal);
$query = "INSERT INTO forum_app_answers (AID, AppID, Question, Answer) 
          VALUES (NULL, '$AppID', '$Questions[$QKey]', '$QVal')";
//  $mysqli is previously defined
$mysqli->query($query);
if ($mysqli->errno !=0){
    printf("you have an error in your query %s", $mysqli->error);
}
于 2013-02-02T21:56:00.723 回答
0

你可以试试:

while(list($QKey,$QVal) = each($AppQuestions)) {
    $result2= mysql_query("
       INSERT INTO forum_app_answers
           (AID, AppID, Question, Answer)". " 
       VALUES (
           NULL,
           '$AppID',
           '$Questions[$QKey]',
            '". mysql_real_escape_string($QVal). "')
      ") or die(mysql_error());

如果没有 mysql_real_escape_string(),您的脚本也会存在巨大的安全问题。

于 2013-02-02T21:55:56.667 回答