PHP+MYSQL问题

zhoucl0220 北京数字政通科技股份有限公司 研发工程师  2008-04-03 10:40:48
if(empty($category))
{
$category=热点;
}


$str_sql="select * from $tablename where category='$category' order by date desc" ;
echo $str_sql;
$result=mysql_db_query($dbname,$str_sql,$link_id) or die(mysql_error());
echo $result;
if(!$result)
{
print('MySQL 选择命令执行错误');
exit();
}

$number_of_rows=@mysql_num_rows($result);


这是我的一段PHP+MySQL程序,echo $result结果为:select * from news where category='热点' order by date desc

我将这段SQL语句在MYSQL中能正确运行,但是在这里却不行这是为什么呢?
在$result=mysql_db_query(...)这句出来的结果确是:
Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='
刚刚接触PHP,不知道这个问题该怎么解决,请高手帮忙!~~谢谢
...全文
45 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhoucl0220 2008-04-16
已经找到病症了,呵呵,在$result=mysql_db_query($dbname,$str_sql,$link_id) or die(mysql_error()); 前面加一句
mysql_query("SET NAMES gbk");
就OK了!~~
回复
jackydrl 2008-04-04
ALTER TABLE `table1` CHANGE `category` `category` VARCHAR(20) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL
如果还不行,可能就要重新装一下mysql了
回复
zhoucl0220 2008-04-04
我试了下上面的例子没问题,但是当我在SQL语句中加上where category='$category'的时候,就出错了
Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='

这是不是什么中文和什么拉丁文什么的不合法呢?求救
回复
zmouki 2008-04-03
这有一个小例子,你参考一下吧!
<?php

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);

echo "$num_rows Rows\n";

?>

回复
zmouki 2008-04-03
自 PHP 4.0.6 起不提倡使用此函数。不要用此函数,用 mysql_select_db() 和 mysql_query() 来替代。
---------------------------------------------
"echo $result结果为:select * from news where category='热点' order by date desc "$result的值只是一个字符串,你要用mysql_num_rows()能得出什么?
------------------------------
$result的结果应该是个结果集,才能出到你想要的东西。
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2008-04-03 10:40
社区公告
暂无公告