php查询mssql出现问号(中文乱码)解决方法
方法一,修改php.ini文件 (当然根据你页面情况来设置也可以是utf-8编码了。
代码如下 | 复制代码 |
;mssql.charset = "ISO-8859-1" |
方法二,直接程序中转换
代码如下 | 复制代码 |
iconv('GB2312','UTF-8',$data) |
方法三,利用Ado连接在连接时设置编码
$conn = new COM(“ADODB.Connection”, NULL, CP_UTF8) or die(“Cannot start ADO”);
例子
代码如下 | 复制代码 |
•<html> •<head> •<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8″> •</head> •<body> •<?php •//print(“The next line generates an error.www.111Cn.net<br>”); •//printaline(“PLEASE?”); •//print(“This will not be displayed due to the above error.”); •?> • •<?php • •$conn = new COM(“ADODB.Connection”, NULL, CP_UTF8) or die(“Cannot start ADO”); •//access 数据库的打开方式 •//$conn->Open(“Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$db”); •//$conn->Open(“DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db”); •$conn->Open(“Driver={SQL Server};Server={192.168.22.40};Database=sugarcrm_db;UID=sa;PWD=123456;”) ; •// 执行查询并输出数据 •$rs = $conn->Execute(‘SELECT * FROM accounts’) or die (“error query”); •?> •<table border=“1″> •<tr><th>ID</th><th>Title</th> •</tr> •<?php •while (!$rs->EOF) { • echo ‘<tr>’; • echo ‘<td>’. $rs->Fields['id']->Value .‘</td>’; • echo ‘<td>’. $rs->Fields['name']->Value .‘</td>’; • echo ‘</tr>’; • $rs->MoveNext(); •} •?> •</table> •<?php •// 释放资源 •$rs->Close(); •$conn->Close(); •$rs = null; •$conn = null; • •?> •</body> •</html> |
总结
一是:数据库类型,其中包括,数据库,表,字段三处都要统一,可以检查一下
二是:文件的编码类型,你若用dw或editplus可以查看页面编码,不同需修改
三是:访问数据库时的设置既set NAMES utf8;
四是:浏览器显示方式,添加meta属性<meta charset=utf-8>
例子。
代码如下 | 复制代码 |
<?php // 备份数据库 $host = "localhost"; $user = "root"; //数据库账号 $password = ""; //数据库密码 $dbname = "mysql"; //数据库名称 // 这里的账号、密码、名称都是从页面传过来的 if (!mysql_connect($host, $user, $password)) // 连接mysql数据库 { echo '数据库连接失败,请核对后再试'; exit; } if (!mysql_select_db($dbname)) // 是否存在该数据库 { echo '不存在数据库:' . $dbname . ',请核对后再试'; exit; } mysql_query("set names 'utf8'"); $mysql = "set charset utf8;\r\n"; $q1 = mysql_query("show tables"); while ($t = mysql_fetch_array($q1)) { $table = $t[0]; $q2 = mysql_query("show create table `$table`"); $sql = mysql_fetch_array($q2); $mysql .= $sql['Create Table'] . ";\r\n"; $q3 = mysql_query("select * from `$table`"); while ($data = mysql_fetch_assoc($q3)) { $keys = array_keys($data); $keys = array_map('addslashes', $keys); $keys = join('`,`', $keys); $keys = "`" . $keys . "`"; $vals = array_values($data); $vals = array_map('addslashes', $vals); $vals = join("','", $vals); $vals = "'" . $vals . "'"; $mysql .= "insert into `$table`($keys) values($vals);\r\n"; } } $filename = $dbname . date('Ymjgi') . ".sql"; //存放路径,默认存放到项目最外层 $fp = fopen($filename, 'w'); fputs($fp, $mysql); fclose($fp); echo "数据备份成功"; ?> |
例子
代码如下 | 复制代码 |
#!/usr/bin/php www.111cn.net define('BACK_PATH', dirname(__FILE__)); /** $mysql_host = 'localhost'; $mysql_user = 'root'; $mysql_passwd = 'root'; if($conn = mysql_connect($mysql_host, $mysql_user, $mysql_passwd)){ |
例子
代码如下 | 复制代码 |
<?php $host="##mysql服务器地址##"; $user="##登录帐号##"; $password="##登录密码##"; $dbname="##数据库名##"; $filename="##备份文件路径##"; mysql_connect($host,$user,$password); mysql_select_db($dbname); $mysql.="CREATE DATABASE IF NOT EXISTS `".$dbname."`;\r\n"; $mysql.="USE `".$dbname."`;\r\n\r\n"; $q0=mysql_query("set names utf8"); $q1=mysql_query("show tables"); while($t=mysql_fetch_array($q1)){ $table=$t[0]; $mysql.="DROP TABLE IF EXISTS `".$table."`;\r\n"; $q2=mysql_query("show create table `$table`"); $sql=mysql_fetch_array($q2); $mysql.=$sql['Create Table'].";\r\n\r\n"; $q3=mysql_query("select * from `$table`"); while($data=mysql_fetch_assoc($q3)){ $keys=array_keys($data); $keys=array_map('addslashes',$keys); $keys=join('`,`',$keys); $keys="`".$keys."`"; $vals=array_values($data); $vals=array_map('addslashes',$vals); $vals=join("','",$vals); $vals="'".$vals."'"; $mysql.="insert into `$table`($keys) values($vals);\r\n"; } $mysql.="\r\n"; } $fp = fopen($filename,'wb'); fputs($fp,$mysql); fclose($fp); include_once('lib/pclzip.lib.php'); $archive = new PclZip($filename.'.zip'); $v_list = $archive->create($filename); if ($v_list == 0) { die("Error : ".$archive->errorInfo(true)); } if(file_exists($filename)){ unlink($filename); } echo "Mysql's backup successfully to ".$filename.".zip"; ?> |
Zip打包备份代码,几乎就是全抄demo,太方便了:
代码如下 | 复制代码 |
<?PHP |
pclzip.lib.php这个压缩包文件大家百度去下载这里未提供。
Excel中的日期,php读取之后,变成了类似25569这样的数字,而不是Excel中显示的1970-1-1字符形式。原来excel中的日期是个1900-1-1开始的数字格式。比如1900-1-1是1,1970-1-1是25569。提供一个读取的函数:
代码如下 | 复制代码 |
//excel日期转换函数 |
sql有许多对数据库操作的语句。但是常见和比较需要的是这么几个语句 DELETE FROM 语句用于从数据库表中删除记录
语句:DELETE FROM table_name WHERE column_name = some_value
解说:查询表为:table_name 的字段 column_name 的值为:some_value 的值
例如:删除表 MyClass中编号为1 的记录
mysql> delete from MyClass where id=1;
列子: 单条删除
代码如下 | 复制代码 |
<?php mysql_select_db("my_db", $con); mysql_query("DELETE FROM Persons WHERE LastName='Griffin'"); mysql_close($con); |
例子,批量删除
批量删除文章这个技术没什么高深莫测的,只是想写下来与大家分享。(适合初学者:)
1、首先在文章列表页面(list.php),将多选筐命名为:“$del_id[]”,值为文章ID号。
例如(list.php):
代码如下 | 复制代码 |
<form name="del_form" action="del.php" method="post"> <?php $result=mysql_query("select * from news"); while($rs=mysql_fetch_array($result)){ ?> <input name="del_id[]" type="checkbox" id="del_id[]" value="<?=$rs[id]?>" /><?=$rs[title]?> <?php } ?> </form> |
2、处理页面(del.php):
代码如下 | 复制代码 |
<?php if($del_id!=""){ $del_num=count($del_id); for($i=0;$i<$del_num;$i++){ mysql_query("Delete from news where id='$del_id[$i]'"); } echo("<script type='text/javascript'>alert('删除成功!');history.back();</script>"); }else{ echo("<script type='text/javascript'>alert('请先选择项目!');history.back();</script>"); } ?> |
注释:SQL 对大小写不敏感。DELETE FROM 与 delete from 等效。
为了让 PHP 执行上面的语句,我们必须使用 mysql_query( 函数。该函数用于向 SQL 连接发送查询和命令。
读取数据库我们需要利用php中的函数连接数据库然后再利用sql查询 表中的数据再遍历出来即可了,下面我们来看一个简单读取mysql实例。
读取mysql数据库
例。
代码如下 | 复制代码 |
<?php |
中文显示乱码问题
当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。
其实简单的方法是通过phpMyAdmin来设置。
设置下面几项:
1: 语言设置为 chinese (zh-utf-8)
2: MySQL 字符集: UTF-8 Unicode (utf8)
3: MySQL 连接校对: utf8_general_ci
4: 新增数据库和数据表的时候,整理项选择 utf8_general_ci
通过以上设置,在phpMyAdmin中操作和查询的时候,中文字符都不会乱码了。
但是你会发现,在php程序中用以前的sql语句查询出来的结果还是乱码,问题就出在connection连接层上。
解决方法是在成功连接数据库之后,发送一句查询语句:
代码如下 | 复制代码 |
1: $this->LinkID = mysql_connect($this->Host, $this->User, $this->Password); DEFINE ('LINK', mysql_connect (DB_HOST, DB_USER, DB_PASSWORD)); |
gbk编码的
代码如下 | 复制代码 |
$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass); |
相关文章
- 最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)
最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24连接MySql速度慢的解决方法(skip-name-resolve)
最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21总结android studio注意事项及打不开等问题解决方法
经过一段时间的使用,总结了android studio打不开等问题的6种解决方法及android studio注意事项,希望对大家有所帮助。 1 首次运行,建立好项目需要下载一些东西,如果...2016-09-20IE6-IE9中tbody的innerHTML不能赋值的解决方法
IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>IE6-IE9中tbody的innerHTML不能复制bug</title> </head> <body style="height:3...2014-06-07- 在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式。<?php$arr = array ( 'Name'=>'希亚', 'Age'...2015-11-08
MySQL ERROR 2013 (HY000)错误解决方法
当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 。如果是在linux shell命令行中直接打 mysql 命令,...2015-03-15- centos6.2,停止mysqld然后修改/etc/my.cnf datadir的位置,启动mysqld提示FAILED,查看日志 复制代码 代码如下: 120609 11:31:31 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 120609 11:35:12 my...2015-03-15
Photoshop提示“此产品的许可证已过期"及“无法开始您的Adobe Photoshop CS5.1 订阅”解决方法
首先不要鄙视我用Photoshop盗版,实在是贵。现在我们来看看如果你的Photoshop提示“此产品的许可证已过期",还有“无法开始您的Adobe Photoshop CS5.1 订阅”如何解决吧...2016-09-14- 小米手机如果想要刷机就必须要先解锁验证才可以,那么,如果遇到小米解锁验证失败以及小米解锁工具登录失败的现象怎么办呢?对此,本文就为大家进行解答,有需要的朋友来看看。...2016-12-21
解决HttpPost+json请求---服务器中文乱码及其他问题
这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22- 今天小编在这里就来给各位photoshop的这一款软件的使用者们来详细的说一下软件的字体出现了乱码这一问题的解决方法,那么各位有出现这个问题的,下面就来跟着小编一起看...2016-09-14
- 用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些 代码如下 复制代码 ...2016-11-25
- 有部分小伙伴表示自己遇到了51模拟器程序不能打开的情况,那么51模拟器打不开怎么回事?下面我就来为大家分享一下解决的方法,有需要的小伙伴就来看一看吧。  &...2017-07-06
CentOS下php使用127.0.0.1不能连接mysql的解决方法
php代码很简单:复制代码 代码如下: $server="127.0.0.1"; println("Begin"); $link = mysql_connect($server,"mysql","mysql"); if (!$link) { die('Could not connect: ' . mysql_error().mysql_errno()); } lin...2015-03-15