Строка, возвращаемая из curl, не вставленная в mySQL - PullRequest
0 голосов
/ 13 мая 2011

Я получаю строку с помощью curl:

$ch = curl_init();    
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL,"https://$URL");  
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $arr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch);    
curl_close ($ch);

, а затем я обновляю таблицу в mySQL этой строкой:

$query = "UPDATE $table SET code='$result' WHERE id=$id";
$result = mysql_query($query)or die("Update query failed : " . mysql_error());

Проблема в том, что столбец пуст послеОбновить.Если я отображаю $ result, я вижу строку в браузере, поэтому я знаю, что она поступает из curl, и если я набираю строку в себе (вместо использования curl $ result), она также вставляется нормально.Я пробовал каждую комбинацию очистки строк, которую я могу придумать:

mysql_real_escape_string(htmlentities($result));

Но все еще нет игры в кости.Есть ли что-то особенное в возвращаемых строках curl, которые могут помешать его вставке в mySQL?

btw, возвращаемая строка выглядит так: ABC * DEF * 12345ABC

РЕШЕНИЕ

Следуя полученному совету, оказалось, что у curl $ result есть \ n во главе, которую я не смог увидеть, пока не повторил запрос $.Я смог быстро исправить это с помощью str_replace (), чтобы удалить \ n.

1 Ответ

0 голосов
/ 13 мая 2011

Я бы немного изменил код для добавления отладки:

$query = "UPDATE $table SET code='$result' WHERE id=$id";
echo "query='{$query}'<br>\n";

$result = mysql_query($query)or die("Update query failed : " . mysql_error());

echo "rows=". mysql_affected_rows() ."<br>\n";

Убедитесь, что запрос выглядит корректно, и попытайтесь запустить его из консоли MySQL или phpmyadmin, рабочей среды и т. Д. И проверьтечтобы увидеть, есть ли какие-либо ошибки при его запуске таким образом.Когда вы запускаете его из консоли, посмотрите очень внимательно, чтобы увидеть, появляются ли какие-либо предупреждения при обновлении.

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