如何查询无法将数据插入从WEB检索到的mysql?

时间:2010-11-23 22:30:34

标签: mysql json insert

我需要在mysql中插入一些数据。我不确定是否需要检查输入或格式化/剥离它们才能将它们插入数据库字段,因为从web返回的结果可能包含mysql不接受的字符(我认为)。将tweets插入mysql表时遇到问题。字段的类型是varchar。这是php脚本中的insert语句:

$json = $_POST['msg_top'];
      $msg = json_decode($json);
           foreach($msg->entry as $status)
               {
                 $t = $status->content;
                 $query = "INSERT INTO msg2(id,msg,msg_id,depth) VALUES ('','$t','ID','3')";
                 mysql_query($query);
                 if(!mysql_query($query, $dbh))
                 {die('error:' .mysql_error());} 
              }

1 个答案:

答案 0 :(得分:1)

是的,在SQL命令中使用它们之前,escape所有值都非常重要。

$json = $_POST['msg_top'];
$msg = json_decode($json);
foreach($msg->entry as $status) {
    $t = mysql_real_escape_string($status->content);
    $query = "INSERT INTO msg2(id,msg,msg_id,depth) VALUES ('','$t','ID','3')";
    mysql_query($query);
    if( !mysql_query($query, $dbh) ) {
        die('error:' .mysql_error());
    }
}

此外,您的查询可能存在其他问题:

  1. 如果id字段为auto_increment'ing,则在字段或值列表中不需要它。
  2. 我可能遗漏了一些东西,但你为什么要在msg_id字段中使用字符串'ID'?
  3. 至于帮助解决这个问题,我建议只将所有$ query字符串附加到日志文件中以供日后检查。然后,如果问题不明显,您可以手动尝试在数据库上运行命令(即:可能通过PhpMyAdmin)并从那里检查任何错误代码。