Mysql没有保存带有'字符的答案

时间:2013-02-02 21:49:04

标签: php mysql

  

可能重复:
  How do I handle single quotes inside a SQL query in PHP?

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

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());

现在的问题是,如果有人在答案中写了'字符,那么数据就不会被保存。对于简单的写作,没关系。问题是只有答案中包含“其中”。任何帮助将受到高度赞赏tx

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

3 个答案:

答案 0 :(得分:2)

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

mysql_已被弃用。

$dbh = new PDO()连接后,

    $sql = 'sql';
    $stmt = $dbh->prepare($sql);
    $stmt->execute($params);

答案 1 :(得分: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);
}

答案 2 :(得分: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(),您的脚本也会遇到很大的安全问题。