乱码一直是困扰PHP初学者的一个非常大的问题,现在总结下造成乱码的原因及解决方法:
第三段:数据库编码:比如用的是phpmyadmin 选择数据库后,选择操作选项.下面有一个整理,这里面也要设置成统一的编码;
第四段:表编码:操作和第三点类似.这里就不重复了;
第五段:字段编码:在建表的建字段的时候,有个整理.如果内容有汉字,就一定要改成统一的编码;
第七段: (刚遇到的)本地测试成功后的网站,传到网上去,会有乱码.可能会是在本地导出数据时没有选择正确的编码,所以才会在导入到web上后有乱码问题.
php操作mysql步骤:
or
die('数据库连接失败.'mysql_error());链接mysql.
names
=
"select
*
from
blog_article";准备要查询的数据.
mysql_query($sql);执行sql查询.
mysql_fetch_assoc($datas)得到查询到的缓存在内存中的一条数据.
相同点:三个函数都是返回数据库中查询到的一行数据(说的再清楚点就是一条数据).
不同点:mysql_fetch_assoc()用的是数据库中相应的字段名作为的key值(也就是数组下标)
如:filed['id']=1;
mysql_fetch_row()用的是自动生成的数字(从0开始依次生成)作为的key值(也就是数组下标)
如:filed[0]=1;
mysql_fetch_array()用的是自动生成的数字(从0开始依次生成)作为的key值(也就是数组下标),而且它还同时生成数据库中相应的字段名作为的key值(也就是数组下标)
如:
filed[0]=1,filed['id']=1;也就是说,mysql_fetch_array()将mysql_fetch_assoc()和mysql_fetch_row()查询到的结果合为了一体了.
mysql_fetch_object()与mysql_fetch_assoc()差不多.只是mysql_fetch_assoc()返回的是数组.mysql_fetch_object()返回的是object对象.
mysql_insert_id() 取得上一步
INSERT
操作产生的
ID.
mysql_result()
函数返回结果集中一个字段的值.
mysql_num_fields()
函数返回结果集中字段的数目.
mysql_affected_rows();返回前一次
MySQL
操作所影响的记录行数.
mysql_num_rows(mysql_query($sql))获得结果集中行的数目.
mysql_pconnect()
函数打开一个到
服务器的持久连接.
和
mysql_connect()
非常相似,但有两个主要区别:
当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接.
其次,当脚本执行完毕后到
SQL
服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close()
不会关闭由
建立的连接).
mysql_unbuffered_query($sql)和mysql_query($sql)效果差不多,但是
mysql_unbuffered_query($sql)不缓存.mysql_query($sql)会缓存查询的结果.
mysql_close();关闭mysql的最近的链接.
primary_key
auto_increment
.
mysql_fetch_lengths(mysql_query($sql))返回该条数据的所有字段的每个字段的长度.返回的是一个数字组成的数组.
mysql_field_table(mysql_query($sql),0)返回指定字段所在的表名.
mysql_free_result(mysql_query($sql))
函数释放结果内存.
mysql_get_client_info()
函数返回
mysql_get_host_info()
取得
主机信息.
我也很就纠结这个问题,现在我是这样做的
foreach($res as $x=$x_value) {
foreach($x_value as $k=$v) {
$data[] = $v;
}
这样可以$data[]生成了'BCur'一列的一个索引数组,但是执行效率不高,多列就要做多次查询,期待更好的方法.
while ($row=mysqli_fetch_assoc($res)){
$id=$row["id"];
......
echo $id;
这个办法只能打印出来
php通过odbc用sql语句查询时无法查询中文,应该怎么转码
咱们以MYSQL为例吧.
MYSQL数据库存在着编码问题,主要体现在数据库里汉字会出现乱码,WEB页面汉字显示不正常.
归结起来只有一个原因:会出现编码的地方存在编码不一致.
稍微改一下你的自定义函数
function?my_json_sql($my_sql){
$result?=?mysql_query($my_sql);
//判断执行结果
if($result?mysql_affected_rows()0){
//先声明一个空数组
$arr=array();
//循环处理结果
$arr[]=$row;
return?$arr;
return?false;
php转码一般用iconv()方法.
如:iconv("转码前的编码","转码后的编码",需要转换编码的字符串);
$result_array?=?array();//定一个接收结果的空数组.
foreach?($s?as?$key?=?$value)?{//使用foreach循环遍历数组.
$result_array[$key]=$value;//从新拼接一个新的数组(转码后)
var_dump($result_array)//打印转码后的数组进行确认.
以上就是土嘎嘎小编为大家整理的php数据库查询转码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!