Home  >  Article  >  Backend Development  >  php access以汉语言作为参数进行数据查询时出现乱码

php access以汉语言作为参数进行数据查询时出现乱码

WBOY
WBOYOriginal
2016-06-13 12:29:53885browse

php access以中文作为参数进行数据查询时出现乱码。
先上代码:

<?php<br />
<br />
include_once("Conn.php");<br />
<br />
$testJSON=array();<br />
$str = trim($_GET['dept']);  <br />
<br />
$mysql ="  select *,0 as ord from checkpro where ifstop=0 and dept like '*".$str."*'  ";<br />
<br />
echo $mysql; <br />
 <br />
 $rs = $conn->Execute($mysql);<br />
 while(!$rs->EOF) <br />
            { 				<br />
<br />
	$mydept =iconv('gb2312','utf-8',$rs->Fields['dept']->Value);<br />
	$mypro =iconv('gb2312','utf-8',$rs->Fields['pro']->Value);<br />
	$mynote =iconv('gb2312','utf-8',$rs->Fields['note']->Value);<br />
	$mykf =iconv('gb2312','utf-8',$rs->Fields['kf']->Value);<br />
<br />
	echo $mydept;<br />
	<br />
    $testJSON[] = array('dept'=>"".$mydept."","pro"=>"".$mypro."","note"=>"".$mynote."","kf"=>"".$mykf."");   <br />
   	$rs->MoveNext();<br />
      }<br />
  <br />
 foreach ( $testJSON as $key => $value ) { <br />
 <br />
     foreach ( $testJSON[$key] as $key_k => $value_k ) { <br />
        $testJSON[$key][$key_k] = urlencode ($value_k);  <br />
	 }<br />
    }  <br />
   echo urldecode ( json_encode ( $testJSON ) );  <br />
<br />
         /*释放资源*/<br />
         $rs->Close();<br />
      $conn->Close();<br />
      $rs = null;<br />
      $conn = null;<br />
<br />
?> 


如果我在地址栏输入:
http://192.168.0.30:81/fkfs/jsons_a/json_deptchpro.php?dept=办公室
那么就会出现如图的错误,如果参数是英文的就不会。


如果我在地址栏输入:
http://192.168.0.30:81/fkfs/jsons_a/json_deptchpro.php?dept=通用
这时不会出现错误,这个参数得到的结果应该是正确的,但是却不显示任何记录。
问大家,这个该怎么解决,谢谢!$str = iconv('utf-8', 'gbk', trim($_GET['dept']));  
$mysql ="  select *,0 as ord from checkpro where ifstop=0 and dept like '*".$str."*'  ";
$rs = $conn->Execute($mysql);另外
$mysql ="  select *,0 as ord from checkpro where ifstop=0 and dept like '*".$str."*'  ";
为什么是 *
应该
$mysql ="  select *,0 as ord from checkpro where ifstop=0 and dept like '%".$str."%'  ";
才对 错误信息显示:出错行是 21 行
请指出 21 行在哪里!
你贴出的代码中,21 行是 echo $mydept;,显然不是的

你对输出的数据做了编码转换(iconv('gb2312','utf-8',$rs->Fields['dept']->Value))
显然页面是 utf-8 的
那么 $_GET['dept'] 也就是 utf-8 的了
据此,你不可能查找到中文相关的结果

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn