Как запрос может не вставить данные в MySQL, полученные из WEB? - PullRequest
0 голосов
/ 24 ноября 2010

Мне нужно вставить некоторые данные в MySQL.Я не уверен, нужно ли мне проверять входные данные ИЛИ форматировать / вырезать их, прежде чем они смогут быть вставлены в поля базы данных, поскольку результаты, возвращаемые из Интернета, могут содержать символы, которые mysql не принимает (я думаю).У меня проблемы с вставкой твитов в таблицу MySQL.Тип поля varchar.Это оператор вставки в php-скрипт:

$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 Ответ

1 голос
/ 24 ноября 2010

Да, очень важно экранировать все значения, прежде чем использовать их в команде SQL.

$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. Возможно, я что-то упускаю, но почему вы используете строку 'ID' для поля msg_id?

Что касается помощи в устранении неполадок, я рекомендую просто добавить все строки $ query в файл журнала для последующей проверки. Затем, если проблемы не очевидны, вы можете просто попытаться вручную запустить команду в базе данных (то есть: возможно, через PhpMyAdmin) и проверить любые коды ошибок оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...