raquo符号在mysql插入中完成字符串

时间:2015-11-15 14:10:33

标签: php mysql

我目前正在尝试编写MySQL数据库导出/导入功能。它检索数据库并将其保存为服务器上的.sql文件。当我尝试重新加载数据库时,如果有一个包含符号“或”的字符串,则会在那里停止字符串。

添加问题的问题是,包含这些符号的某些数据是在序列化数组中,因此进行查找和替换可能会导致数组混乱。 (关于这个的任何提示也会很棒)

我想知道是否有任何简单的方法。

这是我的导入代码......

<?php
ini_set('display_errors',1);
$path = $_SERVER['DOCUMENT_ROOT'].'/database-dump-test/';
$sql_filename = 'db.sql';
$sql_contents = file_get_contents($path.$sql_filename);

$sql_contents = explode('/*endofquery*/',$sql_contents);



$server = 'localhost';
$username = 'u';
$password = 'password';
$name = 'db';

$mysqli = new mysqli($server, $username, $password, $name);

foreach($sql_contents as $query){

       $result = $mysqli->query($query);


       if (!$result)

            echo $mysqli->error  . "\n <br><br>";

}
?>

包含“This is»a test”的字符串只会导入“This is”

我尝试逃避,但没有做任何事情。

我确定这会发生在很多其他角色上。

编辑:我认为欧元符号没问题,但似乎并非如此,我已经删除了那部分。

1 个答案:

答案 0 :(得分:0)

您必须在export(!)处转义某些字符串值。使用mysqli :: real_escape_string()。看看这个例子:

$string = "This is » a test";
$escaped  = $mysqli->real_escape_string($string);

$mysqli->query("INSERT into myTable (myColumn) VALUES ('$escaped')"));

可以在http://php.net/manual/de/mysqli.real-escape-string.php

找到完整的文档