用php调用MySQL里的数据,为什么汉字都变成了问号?

用php调用MySQL里的数据,为什么汉字都变成了问号?

用php调用MySQL里的数据,为什么汉字都变成了问号?
我使用的是windows+Apache+MySQL5.0+PHP5.0+phpmyadmin2.9.1
建立的带有汉字的数据库在phpmyadmin里显示正常,在命令提示符下调用MySQL也正常,但是当用php调用MySQL里的中文数据的时候,中文都变成了“?”,有多少的汉字就有多少的“?”。我在网上寻找问题的解决方案,都说在链接数据库的时候加一句:“mysql_query(set names gbk)”,当然有的把gbk换成utf8的。这个是设置链接时使用的编码,我懂。但是我使用的是mysqli的面向对象的编程方法,所以就得用mysqli_query(set names gbk);或者utf8,不过用过之后出现了一个警告,问题也没有解决:
Warning: mysqli_query() expects at least 2 parameters, 1 given in D:\Apache Group\Apache2\htdocs\center\db_fns.php on line 12
需要两个参数,另外一个参数呢?
后来我觉得既然是面向对象的方法,就应该使用面向对象的语法,所以改成面向对象的语法,但是却初现了语法错误。
应该怎样才能解决这个问题呢?各位高手帮忙啊!在这里我先谢谢了。
我写的代码如下(没有加入mysqli_query(set names gbk)或者面向对象的解决办法):
<?php
function db_connect()
{
   $handle = new  mysqli('localhost', 'root', '*****', 'nic');//*****我服务器的密码

   if (!$handle)
   {
     return false;
   }
   return $handle;
}

$handle = db_connect();//面向对象的方法

$news_sql = 'select * from news order by NewsID desc';//我建立的数据库nic,
                                                            //news 是其中的一张表
                                                            //Title是其中的一列,是汉字

$news_result = $handle->query($news_sql);

echo '<table border="0" width="400">';
while($news = $news_result->fetch_assoc())
        {echo "<tr><td> {$news['Title']}</td></tr>";
}                 
echo"</table>";
?>


运行之后显示的是:?????????????,正常的话应该是13个汉字。

http://www.phpfans.net/bbs/viewt ... &extra=page%3D1
看完后相信你一定明白了
毕业了。。。

首先感谢管理员,有人回答我的贴,我很高兴,就像是雪中送碳,雨中送衣。虽然我并没有彻底解决我的问题。
我按照那个置顶贴所说的修改了一下,正常了。但是我有两点疑问:
1、如果使用mysqli,应该怎样修改这个程序呢?
2、那个置顶贴使用的面向过程的方法,而我用的是面向对象的方法。如果对于面向对象的方法应该怎样修改呢?
谢谢管理员,也希望管理员仔细看看我的贴。
再次表示由衷的感谢。

国内有很多主机还没有赶上php5.所以mysql我很少用.
i至于你用的方法,无论是面向过程还是面向对象都一样.
毕业了。。。

班班来了 我就不说了,我也是出这个问题 才认识这的。

我也发现类似的问题,我使用的是windowsXP+Apache2.0.59+MySQL5.1.5+PHP5.0.27+phpmyadmin2.9.1.1,用PHP显示时出现一堆?号,郁闷啊!!!

这里有非常详细的解决方法
http://www.phpfans.net/bbs/viewt ... &extra=page%3D1
毕业了。。。

MYSQL字符集问题,可是真头痛死我们这些新手啊

不过能明白了就不会了~~

只要三个地方字符集一致一般都没什么问题的。。。

问题解决了,原来是将“set names GBK"写成了”set name GBK“,现在终于明白了。谢谢版主