PHP程序查询MYSQL,用中文时出错
比如这样一句:SELECT*FROMtableWHEREkw='今天'PHP程序这样写的:$sql="SELECT*FROMtableWHEREkw='今天'";相同的语...
比如这样一句:
SELECT * FROM table WHERE kw='今天'
PHP程序这样写的:
$sql="SELECT * FROM table WHERE kw='今天'";
相同的语句,在PHP里运行就无法查询,没有报错。把PHP的sql语句echo出来粘贴到phpmyadmin中的sql功能里,就会提示错误,其中“今天”这部分是乱码。我的程序编码和phpmyadmin编码都是utf8。
如果我直接在phpmyadmin的sql功能里输入:
续~
SELECT * FROM table WHERE kw='今天',就能正确查询出结果。
我在查询结果的页面上按“创建PHP代码”后,出现的PHP代码是:$sql="SELECT * FROM table WHERE kw=\'今天\'",可是我把这段代码原封不动的放到PHP程序里,就会直接报错:
SELECT * FROM table WHERE kw=\'今天\'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'今天\'' at line 1
请教高手这是怎么回事?
=================
一样啊。程序的文件是UTF-8,“今天”这个词的编码也是utf-8
=================
谢谢zzs1949。我想问下,mysql_query("SET NAMES 'gbk'");这一句的效果是什么呢? 会不会影响我现有数据库的编码?
另外,我数据库里“kw”列的编码就是utf8_general_ci啊,还需要这样改吗?
=================
下面是直接在phpmyadmin里输入SQL语句出现的错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM table WHERE kw= 展开
SELECT * FROM table WHERE kw='今天'
PHP程序这样写的:
$sql="SELECT * FROM table WHERE kw='今天'";
相同的语句,在PHP里运行就无法查询,没有报错。把PHP的sql语句echo出来粘贴到phpmyadmin中的sql功能里,就会提示错误,其中“今天”这部分是乱码。我的程序编码和phpmyadmin编码都是utf8。
如果我直接在phpmyadmin的sql功能里输入:
续~
SELECT * FROM table WHERE kw='今天',就能正确查询出结果。
我在查询结果的页面上按“创建PHP代码”后,出现的PHP代码是:$sql="SELECT * FROM table WHERE kw=\'今天\'",可是我把这段代码原封不动的放到PHP程序里,就会直接报错:
SELECT * FROM table WHERE kw=\'今天\'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'今天\'' at line 1
请教高手这是怎么回事?
=================
一样啊。程序的文件是UTF-8,“今天”这个词的编码也是utf-8
=================
谢谢zzs1949。我想问下,mysql_query("SET NAMES 'gbk'");这一句的效果是什么呢? 会不会影响我现有数据库的编码?
另外,我数据库里“kw”列的编码就是utf8_general_ci啊,还需要这样改吗?
=================
下面是直接在phpmyadmin里输入SQL语句出现的错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM table WHERE kw= 展开
4个回答
展开全部
只有两种情况的
第一个是数据库的编码和你的页面编码不一致。
要保持都为utf8;
第二个 是你的表名一定错了,table是系统默认的关键字,不能用作表名字的。
第一个是数据库的编码和你的页面编码不一致。
要保持都为utf8;
第二个 是你的表名一定错了,table是系统默认的关键字,不能用作表名字的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mysql_connect("localhost","root","12345") /*请修改用户名和密码*/
or die("无法连接数据库,请重来");
mysql_select_db("user")
or die("无法选择数据库,请重来");
mysql_query("SET NAMES 'gbk'");/*解决汉字*/
你这样试下 我的没问题
or die("无法连接数据库,请重来");
mysql_select_db("user")
or die("无法选择数据库,请重来");
mysql_query("SET NAMES 'gbk'");/*解决汉字*/
你这样试下 我的没问题
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$links = mysql_connect("localhost","root","") or die("can't connect" . mysqo_error());
mysql_select_db('数据库名');
mysql_query("SET NAMES 'utf-8'")
$sql = "SELECT * FROM table WHERE kw='今天'";
$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs))
{
print_r($row);/// $row 是一个数组
}
mysql_select_db('数据库名');
mysql_query("SET NAMES 'utf-8'")
$sql = "SELECT * FROM table WHERE kw='今天'";
$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs))
{
print_r($row);/// $row 是一个数组
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是编码不一样!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询