我想在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;?
答案 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'
)";