写了一个php查询,但是就是传不出中文。

+展开
-HTML
<?php 
header("content-Type: text/html; charset=gb2312"); 
$keyword=$_POST['keyword']; 
if ($keyword==""
  die(); 

$conn=mysql_connect("localhost","root","××××××"); 
@mysql_select_db("phplearn"or die('sorry'); 

$sql="select * from suggest where title like '%“.$keyword.”%' order by id desc limit 5"
$result=mysql_query($sql); 

echo ' <ul>'
while($row = mysql_fetch_array($result)) 

echo ' <li onclick=""form_submit()"" onmouseover=""mo(this.value)"">'.$row['title'].' <span>'.$keyword.' </span> </li>'

echo ' </ul>'
mysql_close(); 

?> 


我测试过header("content-type:text/xml;charset=gb2312");
$keyword=mb_convert_encoding(trim($_POST['keyword'].''), "gb2312", "UTF-8");
mysql_query('set names gb2312');
但是都不行,查询英文是没有问题的,就是中文不对,输入“我”,结果用的是“%u6211”,这样才导致查不出结果。


-----------------------------------------
superwmh
如果是用 AJAX 呼叫,輸出應該使用 UTF-8 才是,試試看輸出改用:

+展开
-PHP
header("content-type:text/xml;charset=utf-8"); 

while($row = mysql_fetch_array($result)) 

  echo ' <li onclick=""form_submit()"" onmouseover=""mo(this.value)"">'.
    mb_convert_encoding($row['title'], "UTF-8""gb2312").' <span>'.
    mb_convert_encoding($keyword"UTF-8""gb2312").' </span> </li>'





masss
masss

+展开
-HTML
<?php 
header("content-type:text/xml;charset=UTF-8"); 
$keyword=$_POST['keyword']; 
if ($keyword==""
  die(); 

$conn=mysql_connect("localhost","root","******"); 
@mysql_select_db("phplearn"or die('sorry'); 

$sql="select * from suggest where title like '%".$keyword."%' order by id desc limit 5"
$result=mysql_query($sql); 

echo ' <ul>'
  echo ' <li onclick=""form_submit()"" onmouseover=""mo(this.value)"">'
    mb_convert_encoding($row['title'], "UTF-8""gb2312").' <span>'
    mb_convert_encoding($keyword"UTF-8""gb2312").' </span> </li>'

echo ' </ul>'
mysql_close(); 

?> 

改成这样了还是不行哦,我是用的ajax,会不会是我的js的问题啊?但是我写了asp同样的查询没有问题

masss
masss
等级:
发表于:2008-10-15 09:25:113楼 得分:0
+展开
-HTML
<?php 
$keyword=mb_convert_encoding($_POST['keyword'], "UTF-8""gb2312"); 
if ($keyword==""
  die(); 
  echo ' <li onclick=""form_submit()"" onmouseover=""mo(this.value)"">'
    mb_convert_encoding($keyword"gb2312""UTF-8").' <span>'
    mb_convert_encoding($keyword"gb2312""UTF-8").' </span> </li>'

?> 


去掉了查询,用上面的直接输出,还是显示不正确


showbo
要学习了.....さようなら
等级:
发表于:2008-10-15 09:25:384楼 得分:0
asp,asp.net在使用ajax发送数据时使用escape来编码,但是php需要用encodeURIComponent来编码,这样php才能使用mb_convert_encoding进行编码转换

昨天你下载的google代码里面没看我的js代码吗




masss
masss
等级:

发表于:2008-10-15 09:33:536楼 得分:0
+展开
-JavaScript
var j=-1; 
var temp_str; 
var $=function(node){ 
return document.getElementById(node); 

var $$=function(node){ 
return document.getElementsByTagName(node); 

function ajax_keyword(){ 
var xmlhttp; 
try
xmlhttp=new XMLHttpRequest(); 

catch(e){ 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 

xmlhttp.onreadystatechange=function(){ 
if (xmlhttp.readyState==4){ 
if (xmlhttp.status==200){ 
var data=xmlhttp.responseText; 
$("suggest").innerHTML=data; 
j=-1; 



xmlhttp.open("post""aa.php"true); 
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); 
xmlhttp.send("keyword="+escape($("keyword").value)); 

function keyupdeal(e){ 
var keyc; 
if(window.event){ 
keyc=e.keyCode; 

else if(e.which){ 
keyc=e.which; 

if(keyc!=40 && keyc!=38){ 
ajax_keyword(); 
temp_str=$("keyword").value; 



function set_style(num){ 
for(var i=0;i <$$("li").length;i++){ 
var li_node=$$("li")[i]; 
li_node.className=""

if(j>=0 && j <$$("li").length){ 
var i_node=$$("li")[j]; 
$$("li")[j].className="select"


function mo(nodevalue){ 
j=nodevalue; 
set_style(j); 

function form_submit(){ 
if(j>=0 && j <$$("li").length){ 
$$("input")[0].value=$$("li")[j].childNodes[0].nodeValue; 

document.search.submit(); 

function hide_suggest(){ 
var nodes=document.body.childNodes 
for(var i=0;i if(nodes[i]!=$("keyword")){ 
$("suggest").innerHTML=""




function keydowndeal(e){ 
var keyc; 
if(window.event){ 
keyc=e.keyCode; 

else if(e.which){ 
keyc=e.which; 

if(keyc==40 || keyc==38){ 
if(keyc==40){ 
if(j <$$("li").length){ 
j++; 
if(j>=$$("li").length){ 
j=-1; 


if(j>=$$("li").length){ 
j=-1; 


if(keyc==38){ 
if(j>=0){ 
j--; 
if(j <=-1){ 
j=$$("li").length; 


else
j=$$("li").length-1; 


set_style(j); 
if(j>=0 && j <$$("li").length){ 
$("keyword").value=$$("li")[j].childNodes[0].nodeValue; 

else
$("keyword").value=temp_str; 


这个是我的js


showbo
要学习了.....等级:
发表于:2008-10-15 09:38:187楼 得分:0
+展开
-JavaScript
//xmlhttp.send("keyword="+escape($("keyword").value)); 
//========>
xmlhttp.send("keyword="+encodeURIComponent($("keyword").value));//这样编码数据才能使用mb_convert_encoding进行gb到utf-8的转换





masss
masss

发表于:2008-10-15 09:47:408楼 得分:0
encodeURIComponent已经换了escape

后台也写成:
+展开
-HTML
<?php 
$keyword=$_POST['keyword']; 
if ($keyword==""
  die(); 
  echo ' <li onclick=""form_submit()"" onmouseover=""mo(this.value)"">'
    mb_convert_encoding($keyword"UTF-8""gb2312").' <span>'
    mb_convert_encoding($keyword"UTF-8""gb2312").' </span> </li>'

?> 

中文显示成“???”


masss
masss
现在搞定了,测试中



spyking945
CSDN

发表于:2008-10-15 09:53:4010楼 得分:0
把所有的编码改成UTF—8




masss
masss


发表于:2008-10-15 09:59:3711楼 得分:0
+展开
-HTML
<?php 
$keyword=$_POST['keyword']; 
if ($keyword==""
  die(); 
header("content-type:text/xml;charset=gb2312"); 
echo ' <UL>'
  echo ' <li onclick=""form_submit()"" onmouseover=""mo(this.value)"">'
    mb_convert_encoding($keyword"gb2312""UTF-8").' <span>'
    mb_convert_encoding($keyword"gb2312""UTF-8").' </span> </li>'
echo ' </UL>'
?> 
用上面的代码可以输出中文了,但是用:
+展开
-HTML
<?php 
$keyword=$_POST['keyword']; 
if ($keyword==""
  die(); 
$conn=mysql_connect("localhost","root","851031"); 
@mysql_select_db("phplearn"or die('sorry'); 
$sql="select * from suggest where title like '%".$keyword."%' order by id desc limit 5"
$result=mysql_query($sql); 
echo ' <ul>'
while($row = mysql_fetch_array($result)) 


  echo ' <li onclick=""form_submit()"" onmouseover=""mo(this.value)"">'
    mb_convert_encoding($row['title'], "gb2312""UTF-8").' <span>'
    mb_convert_encoding($keyword"gb2312""UTF-8").' </span> </li>'


echo ' </ul>'
mysql_close(); 

?> 
就出问题,mysql错误,应该是在查询keyword前要转一次,但是用了$keyword=mb_convert_encoding(trim($_POST['keyword'].''), "gb2312", "UTF-8"); 还是不行,希望高手指教


masss
masss

发表于:2008-10-15 10:03:1112楼 得分:0
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wwwroot\php\??oogle??splmysql??a.php on line 12


masss
masss

发表于:2008-10-15 10:04:2313楼 得分:0
错了,是line 10


showbo
要学习了.....
发表于:2008-10-15 10:18:0614楼 得分:0
+展开
-PHP
$sql="select * from suggest where title like '%".$keyword."%' order by id desc limit 5"
echo $sql;//输出sql看看是否正确






masss
masss

发表于:2008-10-15 10:27:3815楼 得分:0
select * from suggest where title like '%bar%' order by id desc limit 5
正确,而且查询分析器有结果


masss
masss
发表于:2008-10-15 10:28:5116楼 得分:0
select * from suggest where title like '%我%' order by id desc limit 5
中文也正确

masss
masss

发表于:2008-10-15 10:33:1517楼 得分:0
+展开
-HTML
<?php 
$keyword=mb_convert_encoding(trim($_POST['keyword'].''), "gb2312""UTF-8");
if ($keyword==""
  die(); 
$conn=mysql_connect("localhost","root","851031"); 
@mysql_select_db("phplearn"or die('sorry'); 
$sql="select * from suggest where title like '%".$keyword."%' order by id desc limit 5"
$result=mysql_query($sql); 
header("content-type:text/xml;charset=gb2312");


echo ' <ul>'
while($row = mysql_fetch_array($result)) 

echo ' <li onclick=""form_submit()"" onmouseover=""mo(this.value)"">'.$row['title'].' <span>'.$keyword.' </span> </li>'

echo ' </ul>'
mysql_close(); 


?> 



现在查询用的这个,英文没有问题,就是中文报Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wwwroot\php\仿google的asp连mysql版\aa.php on line 13



spyking945
CSDN
不用responsexml
用text就好了


showbo
要学习了.....
发表于:2008-10-15 10:45:3719楼 得分:50
提示的错误是$result没有正确取出,应该是null

你直接访问这个php页面,然后执行$sql+"select * from suggest where title like '%我%' order by id desc limit 5 "的语句看执行有错误没有
+展开
-HTML
<?php 
//$keyword=mb_convert_encoding(trim($_POST['keyword'].''), "gb2312", "UTF-8");
i/*f ($keyword=="") 
  die(); */

$keyword="我";//=======================
$conn=mysql_connect("localhost","root","851031"); 
@mysql_select_db("phplearn"or die('sorry'); 
$sql="select * from suggest where title like '%".$keyword."%' order by id desc limit 5"
$result=mysql_query($sql); 
header("content-type:text/xml;charset=gb2312");


echo ' <ul>'
while($row = mysql_fetch_array($result)) 

echo ' <li onclick=""form_submit()"" onmouseover=""mo(this.value)"">'.$row['title'].' <span>'.$keyword.' </span> </li>'

echo ' </ul>'
mysql_close(); 


?> 



masss
masss
发表于:2008-10-15 10:52:3420楼 得分:0
while($row = mysql_fetch_array($result))
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wwwroot\php\仿google的asp连mysql版\bb.php on line 14
还是有这个错误,我发现在查询分析器里面能查出,但是用sql去查就没有结果,搞不清楚原因。

加支付宝好友偷能量挖...


评论(0)网络
阅读(135)喜欢(1)JavaScript/Ajax开发技巧