无法将xml字符串插入mysql表

时间:2014-09-01 05:05:07

标签: php mysql xml mysqli

我想在xml字符串下面插入mysql数据库

<message to='". $groupMembersArray[$i] . "@crossmessenger.com' type='groupchat' from='$mFrom'><x  xmlns='jabber:x:event'><offline/><delivered/><displayed/></x><body>$message</body></message>

所以我写了下面的代码

     $connection = mysqli_connect("localhost","xyz","abc#123","mydb");


for($i = 0 ; $i < $totalMembers ; $i++){

               $stanzaToInsert = "<message to='". $groupMembersArray[$i] ."@crossmessenger.com' type='groupchat' from='$mFrom'><x xmlns='jabber:x:event'><offline/><delivered/><displayed/></x><body>$message</body></message>";

           $msgSize = strlen($stanzaToInsert);
               $insertQuery = "INSERT INTO ofOffline VALUES ('$groupMembersArray[$i]', $messageID, $creationDate, $msgSize, '$stanzaToInsert')";
           mysqli_query($connection, $insertQuery);
           mysqli_commit($connection);
           echo "record $message inserted in table and commited";

}

但没有任何东西插入数据库。如果我将xml字符串替换为一些简单文本的stanzaToInsert的值,那么它就是将值插入数据库。

$insertQuery = "INSERT INTO ofOffline VALUES (
                         $groupMembersArray[$i], 
                         $messageID, 
                         $creationDate,
                         $msgSize,
                        'hard coded string'
                       )";

问题在于xml字符串。

所以我可以知道&#34;我的错误&#34;?

2 个答案:

答案 0 :(得分:1)

在插入像这样的

之前,你应该使用mysqli_real_escape_string
$stanzaToInsert = mysqli_real_escape_string($connection, $stanzaToInsert);

答案 1 :(得分:0)

请使用&#34;&#34;在xml字符串之前为xml消息惰性,如下所示: -

(NULL,N'<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>')

您的代码应如下所示: -

$insertQuery = "INSERT INTO ofOffline VALUES (
                             $groupMembersArray[$i], 
                             $messageID, 
                             $creationDate,
                             $msgSize,
                            N'$xmlstring'
                           )";