PHP/mySQL获取文件内容并更新列

PHP/mySQL获取文件内容并更新列,php,mysql,Php,Mysql,我有一个mySQL数据库表。其中一个表列包含指向远程服务器上不同xml文件的URL 我的目标是读取每个URL信息,并将xml内容分别写入同一记录行的另一列中 在我的PHP代码中,我能够从mySQL数据库中正确地获取URL,并且能够将远程服务器上的XML内容正确地输入到变量中 但问题是当我一行一行地将内容写到我的表中时。某些XML列已正确更新,而某些XML列为空 我非常确定每次变量都正确地获取了内容,因为我能够在屏幕上打印出每个单独的内容 为什么有些内容更新了专栏,而有些内容没有更新。所有XML字

我有一个mySQL数据库表。其中一个表列包含指向远程服务器上不同xml文件的URL

我的目标是读取每个URL信息,并将xml内容分别写入同一记录行的另一列中

在我的PHP代码中,我能够从mySQL数据库中正确地获取URL,并且能够将远程服务器上的XML内容正确地输入到变量中

但问题是当我一行一行地将内容写到我的表中时。某些XML列已正确更新,而某些XML列为空

我非常确定每次变量都正确地获取了内容,因为我能够在屏幕上打印出每个单独的内容

为什么有些内容更新了专栏,而有些内容没有更新。所有XML字符串都具有相同的格式。如果我复制了该内容并手动更新了mysql表,它就会成功地写入表中

一开始我认为这是时间问题,所以我为我的PHP代码添加了足够的睡眠时间。这没用。然后我怀疑我的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' "); 

   }

也许可以尝试将XML转换为本机数组,并以这种方式使用它:

$array = json_decode(json_encode(simplexml_load_string($url_content)),TRUE);

使用mysqli db连接器的方式使代码容易受到sql注入的攻击。阅读准备好的声明!很可能这也是您的问题:sql注入导致sql语句中断。例如,如果$url_内容包含诸如引用字符之类的内容,而这些字符没有按照构造语句的方式正确处理,就会发生这种情况。我建议您转储创建的sql语句,而不是运行它们进行测试。然后仔细观察一个不起作用的,你就会意识到问题所在。@arkascha说的+如果手动运行意味着使用phpmyadmin更新行,phpmyadmin将为你逃避输入。如果您的xml数据格式相同,请在问题中包含一些示例…或在更新数据库之前对数据进行url_编码。任何无效字符都将被“验证”。@GavinSimpson否!首先,这是错误的策略,其次,为什么要使用URLENCDE?我们不是在谈论url,因为第三个$url_内容包含文件内容,而不是url,第四个经过验证的内容意味着它们实际上被修改了,这不是OP想要的!编程至少有60%是一种猜测游戏。那么你就是那些永远在猜测而不是编程的数百万人之一。我从来就不理解这种方法。它非常耗时,通常会导致可怕的结果。提示:一个人实际上可以学习如何编程。摇摇头,你一定是那种根据两行文字做出假设的人。。阿索尔告诉比尔·盖茨。。他仍然没有做对。有这么多的方法做事情。人们常常猜测如何选择适合当前需求的产品。事先调查哪一个是正确的可能同样耗时。但要做好人。