繁体   English   中英

无法将xml字符串插入mysql表

[英]unable to insert xml string into mysql table

我想在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";

}

但没有任何内容插入数据库。 如果我将表示stanzaToInsert值的xml字符串替换为一些简单的文本,则它将值插入数据库。

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

所以问题出在xml字符串上。

我能知道“我怎么了”吗?

您应该在插入这样的值之前使用mysqli_real_escape_string

$stanzaToInsert = mysqli_real_escape_string($connection, $stanzaToInsert);

请在xml字符串前使用“ N”以使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'
                           )";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM