既然选择了远方,便只顾风雨兼程~~~
新手学PHP之数据库操作详解及乱码解决!
上一篇 /
下一篇 2006-12-20 21:34:44
查看( 3189 ) /
评论( 17 )
很多
朋友新学
PHP也许在
数据库方面会有点麻烦,尤其是MYSQL4.1.x以后会出现乱码问题。这里写个简单
教程,希望对新手有点帮助。也许很多朋友之前是学ASP的(本人也是),有可能怀念ASP的set rs=adodb.recorset(我靠,太久没做ASP,后面的好像有点错,想不起来了!凑活着看吧!)然后就rs.open,rs.movenext...........可是PHPA是依靠很多数据库操作函数来控制,比如:mysql_connect();mysql_select_db();...........那如果页面多,难道要一个个的重复写这些函数???当然不用,现在给大家个数据库操作类,里面包含了大多数,数据库操作的方法,包含基本配置信息,以后大家需要调用数据库信息就直接包含这个页面就可以,下面给出代码及使用方法。
首先需要两个页面1.config.inc.php代码:
CODE:
<?php
//数据库参数变量设定
//$dbhost:主机名
//$dbuser:连接帐户
//$dbpassword:连接密码
//$dbname:数据库名
//下面已我机子配置为例,
//请大家根据自己的数据库配置信息配置这个文件即可
//--------------------------------------------------------------------
$dbhost="localhost";
$dbuser="root";
$dbpassword="7529639";
$dbname="cr_download";
//--------------------------------------------------------------------
?>
另一个就是数据库操作类页面了dbclass.php
CODE:
<?php
//定义数据库操作类
class db{
//类属性定义
var $dbhost="localhost";//MYSQL主机
var $dbuser="root";//连接帐户
var $password="";//连接密码
var $dbname="";//数据库名
//变量引用
function mysql($dbhost,$dbuser,$password,$dbname){
$this->dbhost=$dbhost;
$this->dbuser=$dbuser;
$this->password=$password;
$this->dbname=$dbname;
}
//创建MYSQL连接
function mycon(){
@mysql_connect($this->dbhost,$this->dbuser,$this->password);
}
//选择相应的数据库
function selectdb(){
@mysql_select_db($this->db);
}
//创建数据库连接并选择相应数据库
function createcon(){
mysql_connect($this->dbhost,$this->dbuser,$this->password);
mysql_query("SET NAMES 'GBK'");//这是解决乱码的关键哦,LINUX下改为UTF8
mysql_select_db($this->dbname);
}
//执行SQL语句,并返回结果集
function fetch_array($sql){
$result=mysql_query($sql);
return mysql_fetch_array($result);
}
//执行SQL语句
function query($sql){
return mysql_query($sql);
}
//取得结果集数组
function loop_query($result){
return mysql_fetch_array($result);
}
//关闭数据库连接
function close() {
return mysql_close();
}
}
?>下面讲下用法:
如果一个页面要涉及数据库操作,请这样使用:
CODE:
<?php
include('inc/config.inc.php');//包含数据库基本配置信息
include('inc/dbclass.php');//包含数据库操作类
//以下以插入一条数据为例说明,其他操作用法相似
//-----------------------------------------------------------------------------------
$db=new db;//从数据库操作类生成实例,OOP还是好啊
$db->mysql($dbhost,$dbuser,$dbpassword,$dbname);//调用连接参数函数
$db->createcon();//调用创建连接函数
//-----------------------------------------------------------------------------------
//开始插入数据
//-----------------------------------------------------------------------------------
$addsql="insert into cr_userinfo values(0,'$username','$userpwd','$time',50,1,'$userquestion','$useranswer')";
$db->query($addsql);
echo"<img src=images/pass.gif> <font color=red>恭喜您,注册成功!请点击<a href=login.php>这里</a>登录!</font>";
$db->close();//关闭数据库连接
?>好了,看完这篇文章相信新手们可以很好的使用PHP对MYSQL进行基本的数据添加,删除等操作了,而且代码规范,易于维护。祝各位
学习愉快,有不懂的就回帖留言,我会第一时间回复^_^。
[
本帖最后由 leehui1983 于 2006-12-1 20:58 编辑]
论坛模式
推荐
收藏
分享给好友
管理
TAG:
-
9tmd
发布于2006-12-01 21:12:29
-
其实关键的就是一句 mysql_query("SET NAMES 'GBK'"); 在connect之后,query之前执行此句。
根本的解决办法,修改my.ini文件,加入简单的两行,之前好像另外有个帖子专门说过这个问题
http://www.phpchina.com/bbs/view ... amp;page=2#pid87439
不过楼主辛苦贴代码,顶一下
-
leehui1983
发布于2006-12-01 21:22:17
-
主要给新手看,而且这个帖子的重点不在于解决乱码,而是一种编程风格
-
86800787
发布于2006-12-01 22:54:54
-
取得的结果只有一行
把它写成二维数组让它可以读取多行:
-
cclang发布于2006-12-02 00:22:40
-
小弟氏新手,据我所知使用mysql_query("set names 'gbk'")
的确能解决乱码问题,但降低效率。
-
leehui1983
发布于2006-12-02 11:05:03
-
取得的结果只有一行?这个不可能吧,我一直用得好好得,楼上得说降低效率,也许吧,你有好的方法分享吗?
[ 本帖最后由 leehui1983 于 2006-12-2 11:07 编辑 ]
-
Phzzy
发布于2006-12-02 11:57:20
-
所有编码都一致,根本不用set names
:)
-
leehui1983
发布于2006-12-02 14:08:56
-
感觉linux下更好解决这个问题,我linux下全用utf8编码
-
leehui1983
发布于2006-12-02 19:20:05
-
没人顶了啊?自己顶起~~~~呵呵
-
HeavenWoo发布于2006-12-02 22:04:45
-
我顶
-
yyb
发布于2007-03-02 00:06:54
-
标记下
-
学习者
发布于2007-03-02 08:30:48
-
值得一顶,好文章。
-
maliu发布于2007-05-15 15:54:06
-
如果数据库是ACCESS那怎么连接???
您这个是对MYSQL数据库的连接.那如何我用的是access数据库的话.那么我改怎么写个类呢?谢谢!
-
十月冷风
发布于2007-05-15 16:03:40
-
确实和解决乱码关系不大:lol
-
ajiu723
发布于2007-08-14 18:32:12
-
//选择相应的数据库
function selectdb(){
@mysql_select_db($this->db);
}
$this ->db 是不是写错了 没有db
应该是$this->dbname吧
-
ajiu723
发布于2007-08-14 19:04:20
-
笨笨 笨 终于想通了 我收回刚才问的话
-
luzhou
发布于2007-08-14 20:25:06
-
不错,LZ最近功力增了不少啊。
:)
-
lucas1860
发布于2008-09-19 16:39:06
-
这两个应该可以合二为一吧。
function mycon(){
@mysql_connect($this->dbhost,$this->dbuser,$this->password);
}
function createcon(){
mysql_connect($this->dbhost,$this->dbuser,$this->password);
mysql_query("SET NAMES 'GBK'");//这是解决乱码的关键哦,LINUX下改为UTF8
mysql_select_db($this->dbname);
}
这两个应该可以合二为一吧。