【问题标题】:unable to insert xml string into mysql table无法将 xml 字符串插入 mysql 表
【发布时间】:2014-09-01 05:05:06
【问题描述】:

我想将下面的 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 字符串上。

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

【问题讨论】:

  • 您是否遇到任何错误?如果不是,请检查您的消息字段类型。
  • @ManishJ:不,没有收到任何错误。类型是“文本”
  • 你试过 addlashes() 或 mysql_escape_string() 吗?
  • @ManishJ 试过 mysqli_real_escape_string 但没用

标签: php mysql xml mysqli


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    请在 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'
                               )";
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 2015-04-30
      • 2011-07-05
      • 2010-10-19
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 2012-09-05
      相关资源
      最近更新 更多