MYSQL的字段名转义使用返引号`,不是单引号,注意上面代码的下面部分:
站在用户的角度思考问题,与客户深入沟通,找到阳谷网站设计与阳谷网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册、网络空间、企业邮箱。业务覆盖阳谷地区。
WHERE '账户'='中文'; //查询中文字报错,数字字母都能正常查询
【账户】是字段名,应使用反引号:
`账户`
【中文】是常量,单双引号都可以,但是要注意你现在的语句是在单引号里面,因此应该转义或者使用双引号,这部分可以修改为:
WHERE 账户="中文"';
另外,如果只是查询中文内容才报错,可能你粘贴代码和原始代码有区别,原始代码没有把字段名放在单引号里面,否则是查不到内容的。查询中文内容报错,一般是中文的编码和网页文件的编码、以及数据库的编码不一致,你这来数据库是UTF8,那么PHP脚本文件、浏览器网页都必须使用UTF-8
我说一下几个步骤:
1、首先你得有一个存储这些数据的数据库表,比如数据库表的结构是这样的。
数据库表名为:user
字段:编号(id),姓名(name),手机(mobile),产品名称(productName) 主键为id
2、实现你需要的功能:
第一步:你需要连接数据库,有一个连接数据库的文件:conn.php。内容如下:
// 我假设你的数据库是mysql的,假设你的数据库用户名为root,密码为123456,根据你数据库的实际情况改写成你的。数据库名称假设为db_889888658
?php
$conn=mysql_connect("localhost","root","123456") or die("数据库连接失败,请检查用户名或密码");
mysql_select_db("db_889888658",$conn);
mysql_query("SET NAMES 'gb2312'");
?
第二步:你需要一个添加数据的表单,就相当于一个注册或添加数据的页面。如文件为:add.html内容如下:
form action="reg.php" method="post"
input type="text" name="name"br/
input type="text" name="mobile"br/
input type="text" name="productName"/br
input type="submit" name="submit" value="添加数据"
/form
第三步:写一个处理你表单提交的数据的文件reg.php。内容如下:
?php
include "conn.php";
if(isset($_POST["submit"])){
$name=$_POST["name"];
$mobile=$_POST["mobile"];
$productName=$_POST["productName"];
$sql="INSERT INTO 'user'(id,name,mobile,productName) VALUES (NULL,$name,$mobile,$productName)";
$query=mysql_query($sql);
$num=mysql_affected_rows($conn);
if($num=1){
echo "scriptalert('数据添加成功');location.href='add.html';/script";
}else{
echo "scriptalert('数据添加失败');history.back();/script";
}
}
?
第四步,第三步已经实现你说的第一个功能。下面说一下你的第二个功能。写一个表单,输入你要查询的手机号,点击“查询”按钮查询你想要的字段。
?php
if($_POST["submit"]){
$mobile=$_POST["mobile"];
if(!empty($mobile)){
include "conn.php";
$sql="SELECT * FROM 'user' WHERE 'mobile'='$mobile'";
$query=mysql_query($sql);
while($rs=mysql_fetch_array($query)){
$str="查询结果:br/";
$str.="用户名:".$rs["name"]." ";
$str.="产品名:".$rs["name"]." ";
}
echo "您查询的手机号为".$mobile."的数据信息如下:br/";
echo $str;
}else{
echo "请输入手机号";
}
}
?
form action="" method="post"
请输入您要查询的手机号:input type="text" name="mobile" input type="submit" name="submit" value="查询"
/form
数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用:mysql_query("SET NAMES GBK");或mysql_query("SET NAMES GB2312");来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用:mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。
事实上MYSQL配置文件my.ini中定义了2个默认编码,分别是[client]里的default-character-set和[mysqld]里的default-character-set来分别设定默认时候客户端连接和数据库内部所采用的编码。上面指定的编码其实是MYSQL客户端连接服务器时候的命令行参数character_set_client,来告诉MYSQL服务器接受到的客户端数据是什么编码的,而不是采用默认编码。
转自:
要解决乱码首先需要知道出现乱码的原因:
一、PHP+MySQL出现中文乱码的原因。
1. MYSQL数据库的编码是utf8,与PHP网页的编码格式不一致,就会造成MYSQL中的中文乱码。
2. 使用MYSQL中创建表、或者选择字段时设置的类型不是utf8,而网页编码不是utf8,也可能造成MYSQL中文乱码.
3. PHP页面的字符集与数据库的编码不一致。
4. PHP连接MYSQL数据库,操作是设定的语句指定的编码和页面编码,PHP页面编码不一致。
5. 用户提交的HTML页面编码,和显示数据的页面编码不一致 ,就肯定会造成PHP页面乱码.
二、解决中文乱码:
1. 网页编码设置。一般在HTML代码中的文件头html中加入属性:
meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″
保证,网页是"utf-8"编码。
2. PHP代码设置。在php代码的开始部分加入以下代码:
header(”Content-type: text/html;charset=utf-8″);
且要求保存的文件编码方式是utf-8,这样就保证了该文件也是utf-8编码。
3. 数据库中表的字段中存储中文的部分,要设置为utf8_general_ci类型。
4.PHP在连接数据库操作时,要设置操作的字段类型为utf8,设置方法如下:
mysql_connect(’localhost’,'user’,'password’);mysql_select_db(’db’);mysql_query(”set names utf8;”); //**设置字符集***
取到值后,在输出的时候%=变量*100%/100,这样用PHP把数据输入,后面跟/100的字符就可以了。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款