2011-02-07 84 views
0

我在mysql数据库(在我的桌面)中有一些照片(不大,只有8kb)。字段类型是blob。我想将表格导出到xml文件,然后将其上传到我的数据库网站。但它不成功。这里是我做了什么: 的数据导出到XML(在我的电脑桌面):在PHP中插入图像二进制数据到MySQL中

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.")"; 
    ... 
} 
... 

它一直告诉我'DB功能失败'。当$ myphoto的值为空时,查询工作正常,但如果$ myphoto不为null,则会显示错误。我认为代码 $myphoto = base64_code($obj->mydata[$i]->myphoto)有问题。 我尝试删除base64_code函数,但它不工作。如何解决这个问题呢?对不起,我的英语不好

回答

1

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

它始终是一个好习惯使用此功能,节省您从SQL注入也来存储数据。

并在列数据周围加引号。

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

谢谢,这解决了我的问题。 – satria 2011-02-07 13:04:39