我有問題的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中運行這個嗎? –