我有问题的MySQL脚本查询字符集在PHP脚本。PHP的MySQL查询字符集
我将GET
参数放在select
查询中,它适用于所有拉丁字符,但使用西里尔字符它会返回空表。如果我在查询中使用西里尔文而不是GET
参数来设置一些值,查询就可以按照我的意愿工作。同样,我在php-Admin中得到结果查询并且它可以工作。
结果中的所有西里尔字符显示我正确。
我检查了一切:PHP文件是utf8
,GET
参数值是utf8
,mysql_client_encoding()
返回我utf8
。
我试过所有找到的东西 - 没有任何帮助。
header('Content-type:text/html; charset=utf-8');
mysql_set_charset('utf8', $link);
mysql_query("SET NAMES utf8", $link);
mysql_query("SET CHARACTER SET 'utf8'", $link);
mysql_query("SET SESSION collation_connection = 'utf8_general_ci'", $link);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $link);
这一切也无济于事。
这是我的PHP脚本。
<?php
$link = mysql_connect('localhost', 'r96036lg_searche', 'Jh1ZT4]^');
//mysql_set_charset('utf8', $link);
//mysql_query("SET NAMES utf8", $link);
//mysql_query("SET CHARACTER SET 'utf8'", $link);
//mysql_query("SET SESSION collation_connection = 'utf8_general_ci'", $link);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $link);
//echo mysql_client_encoding($link);
mysql_select_db('r96036lg_searche', $link);
//mysqli::set_charset('utf8');
$query = "select id, name, typeid from MainObjects where used = 1";
if(isset($_GET['name']) && !empty($_GET['name'])) {
//$name = mb_convert_encoding($_GET['name'], "UTF-8", "win1251");
$name = $_GET['name'];
//echo mb_detect_encoding($name, "auto", false);
//$name = iconv(mb_detect_encoding($name, "auto", false), "UTF-8", $name);
//echo $name;
$query .= " and typeid = 1 and (name like '%".$name.
"%' or id in (select parentid from MainObjects where name like '%"
.$name."%' and used = 1))";
}
//echo $query;
$result = mysql_query($query, $link);
if(!$result) echo mysql_error();
else {
$out = "[";
while($row = mysql_fetch_row($result)) {
... //here is myoutput
}
$out .= "]";
echo $out;
}
?>
在注入查询之前,您没有转义$ _GET参数。你知道SQL注入吗?如果没有,请在继续之前仔细阅读。 –
它看起来像您生成一些JSON。如果是这样,请改用'json_encode'。 –
当你echo $ query时,你会得到什么);'?你已经尝试在phpmyadmin中运行这个吗? –