1

我有一个大问题

当我尝试将查询字符串放入文件时出现以下错误

不正确的字符串值:'\XE6\x00\x00\xfd\xfd\xfd ...'

INSERT INTO `web_plugins` (`nome`, `xmllocal_nome`, `icone_url`, `icone_bytecode`, `swf_url`, `swf_bytecode`) VALUES ('asdfasdf', 'wqwerrwe', '/assets/uploads/plugins_icons/f2d2d3d9.gif', 'GIF89a\0\0�\0\0������������������������������������������������������������������������������������������������������������������������������~~~}}}|||{{{zzzyyywwwvvvuuutttsssrrrqqqpppooonnnmmmjjjfffdddbbb```___]]]\\\\\\ZZZYYYXXXWWWRRRQQQCCC@@@888���\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!�\0\0Q\0,\0\0\0\0\0\0\0��\'KP?BI2/?\02G&-*8\'+;\rNL:!.\"%)\"\'&\'-=B!1)$(%&$�1H;+\',-(&%%#�!4\Z\'))�Ժ(##!94)*$#�\'*&# \"#-/\'\"��$! <>!$!!\"HP���2>���_��p���c��,�H����6F�:�Qr+4�0aF�b�L�8�� \n���b&�]�Ø�I�
4

1 回答 1

1

您应该将 gif 保存在 BLOB 列中。

想象一下下表:

CREATE TABLE testblob(
  id INT AUTO_INCREMENT ,
  data MEDIUMBLOB,
  PRIMARY KEY ( id )
) ENGINE = InnoDB;

然后您可以使用以下 INSERT 代码:

<?php
    $dbh = mysql_connect("localhost", "user");
    mysql_select_db("test");
    $data = file_get_contents("your.gif");
    // This is important to avoid a ' to accidentally close a string
    $data = mysql_real_escape_string($data);
    mysql_query("INSERT INTO testblob(data) VALUES ('$data')");
?>

请注意,这是取自网络上的一篇文章。感谢作者。

此外,您应该注意, mysql_* 扩展已被标记为已弃用。您应该改用 PDO 或 mysqli 扩展。我个人更喜欢PDO。下面是一个使用 PDO 的示例:

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// create a prepared statement
$stmt = $conn->prepare('INSERT INTO `testblob` (`data`) VALUES (:data)');    
// assign the blob value to it
$stmt->bindParam(1, file_get_contents('your.gif'), PDO::PARAM_LOB);

// execute the statemt
$stmt->execute();
于 2013-04-23T18:22:12.783 回答