php access以汉语言作为参数进行数据查询时出现乱码
程序员文章站
2024-01-27 12:48:10
...
php access以中文作为参数进行数据查询时出现乱码。
先上代码:
如果我在地址栏输入:
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=通用
这时不会出现错误,这个参数得到的结果应该是正确的,但是却不显示任何记录。
问大家,这个该怎么解决,谢谢!
------解决方案--------------------
错误信息显示:出错行是 21 行
请指出 21 行在哪里!
你贴出的代码中,21 行是 echo $mydept;,显然不是的
你对输出的数据做了编码转换(iconv('gb2312','utf-8',$rs->Fields['dept']->Value))
显然页面是 utf-8 的
那么 $_GET['dept'] 也就是 utf-8 的了
据此,你不可能查找到中文相关的结果
------解决方案--------------------
$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."%' ";
才对
先上代码:
include_once("Conn.php");
$testJSON=array();
$str = trim($_GET['dept']);
$mysql =" select *,0 as ord from checkpro where ifstop=0 and dept like '*".$str."*' ";
echo $mysql;
$rs = $conn->Execute($mysql);
while(!$rs->EOF)
{
$mydept =iconv('gb2312','utf-8',$rs->Fields['dept']->Value);
$mypro =iconv('gb2312','utf-8',$rs->Fields['pro']->Value);
$mynote =iconv('gb2312','utf-8',$rs->Fields['note']->Value);
$mykf =iconv('gb2312','utf-8',$rs->Fields['kf']->Value);
echo $mydept;
$testJSON[] = array('dept'=>"".$mydept."","pro"=>"".$mypro."","note"=>"".$mynote."","kf"=>"".$mykf."");
$rs->MoveNext();
}
foreach ( $testJSON as $key => $value ) {
foreach ( $testJSON[$key] as $key_k => $value_k ) {
$testJSON[$key][$key_k] = urlencode ($value_k);
}
}
echo urldecode ( json_encode ( $testJSON ) );
/*释放资源*/
$rs->Close();
$conn->Close();
$rs = null;
$conn = null;
?>
如果我在地址栏输入:
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=通用
这时不会出现错误,这个参数得到的结果应该是正确的,但是却不显示任何记录。
问大家,这个该怎么解决,谢谢!
------解决方案--------------------
错误信息显示:出错行是 21 行
请指出 21 行在哪里!
你贴出的代码中,21 行是 echo $mydept;,显然不是的
你对输出的数据做了编码转换(iconv('gb2312','utf-8',$rs->Fields['dept']->Value))
显然页面是 utf-8 的
那么 $_GET['dept'] 也就是 utf-8 的了
据此,你不可能查找到中文相关的结果
------解决方案--------------------
$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."%' ";
才对
相关文章
相关视频