将图像二进制文件从xml数据插入PHP中的mysql

时间:2011-02-07 11:17:18

标签: php mysql xml

我在mysql数据库中有一些照片(不大,只有8kb)(在我的桌面上)。字段类型是blob。我想将表导出到xml文件,然后将其上传到我的数据库网站。但它没有成功。这就是我所做的: 将数据导出到xml(在我的计算机桌面中):

FileStream fs = new FileStream(filename,FileMode.Create,FileAccess.Write,FileShare.None);
StreamWriter sw = new StreamWriter(fs,Encoding.ASCII);
ds.WriteXml(sw);  //write the xml from the dataset ds

然后从我的joomla网站上传xml。我在将xml插入数据库之前加载它

...
$obj = simplexml_load($filename);
$cnt = count($obj->mydata); //mydata is the table name in the xml tag
for($i=0;$i<cnt;$i++)
{
   ...
   $myphoto = 'NULL';
   if(!empty($obj->mydata[$i]->myphoto))
   {
      $myphoto = base64_code($obj->mydata[$i]->myphoto);
   }
   //insert to the database
   $sqlinsert = "insert into jos_myphoto (id,myphoto) values(".$i.",".$myphoto.")";
   ...
}
...

它一直告诉我'数据库功能失败'。当$ myphoto的值为null时,查询效果很好,但如果$ myphoto不为null,则会出现错误。我认为代码有问题 $myphoto = base64_code($obj->mydata[$i]->myphoto)。 我尝试删除base64_code函数,但它不起作用。如何解决这个问题呢?抱歉我的英文不好

1 个答案:

答案 0 :(得分:1)

您的数据可能包含哪些需要转义mysql_real_escape_string()功能并尝试

使用此功能存储数据始终是一个好习惯,这也可以使您免于sql注入。

并在列数据周围加上引号。

$sqlinsert = "insert into jos_myphoto (id,myphoto) 
values(".$i.",'".mysql_real_eascape_string($myphoto)."')";