У меня есть таблица mySQL db. Один из столбцов таблицы содержит URL-адреса, которые указывают на разные XML-файлы на удаленном сервере.PHP/mySQL get_file_contents и обновить столбец
Моя цель - прочитать каждую информацию о URL-адресах и написать содержимое xml в другой столбец в той же записи (строке) соответственно.
В моем PHP-коде я могу правильно получить URL-адрес из базы данных mySQL, и я могу правильно получить XML-содержимое на удаленном сервере в переменную.
Но проблема в том, что я пишу контент в свою таблицу по строкам. Некоторые столбцы XML правильно обновились, а некоторые столбцы XML пустые.
Я уверен, что каждый раз, когда переменная получает контент правильно, я могу распечатать каждый отдельный контент на экране.
Почему некоторый контент обновляет колонку, а некоторые нет. Все строки XML имеют одинаковый формат. Если я скопировал этот контент и обновил таблицу mysql вручную, он успешно записал в таблицу.
В начале я подумал, что это вопрос времени, поэтому я добавляю достаточно времени для моего PHP-кода. это не поможет. то я подозревал свой datatype моего db, поэтому я изменил тип данных столбца XML от VCHAR до TEXT и даже LONGTEXT. это тоже не поможет. У кого-нибудь есть ключ?
часть моего кода PHP ниже ...
$result = mysqli_query($con,"SELECT url_txt FROM mytable ");
//work with result line by line:
while($row = mysqli_fetch_array($result)) {
echo $url_content = file_get_contents($row['url_txt']);
//debug line below *******************************/
echo $URL=$row[url_txt];
//debug line above********************************/
mysqli_query($con,"UPDATE mytable SET xml_info='$url_content' where url_txt = '$URL' ");
}
способ использования соединителя MySQLi дБ делает ваш код уязвимым для SQL-инъекции. Читайте о «подготовленных заявлениях»! – arkascha
Скорее всего, это также ваша проблема: сломанные sql-заявления из-за SQL-инъекции. Это происходит, например, если '$ url_content' содержит такие вещи, как кавычки, которые не обрабатываются правильно, как вы строите свой оператор. Я предлагаю вам сбросить созданные SQL-запросы вместо того, чтобы запускать их для теста. Затем внимательно рассмотрите тот, который не работает, и вы поймете, в чем проблема. – arkascha
Что сказал @arkascha +, если «запуск вручную» означает обновление строк с помощью phpmyadmin, phpmyadmin будет избегать ввода для вас. Если ваши XML-данные находятся в одном формате, добавьте несколько примеров в вопрос – Kyborek