很多朋友新学PHP也许在数据库方面会有点麻烦,尤其是MYSQL4.1.x以后会出现乱码问题。这里写个简单教程,希望对新手有点帮助。也许很多朋友之前是学ASP的(本人也是),有可能怀念ASP的set rs=adodb.recorset(我靠,太久没做ASP,后面的好像有点错,想不起来了!凑活着看吧!)然后就rs.open,rs.movenext………..可是PHPA是依靠很多数据库操作函数来控制,比如:mysql_connect();mysql_select_db();………..那如果页面多,难道要一个个的重复写这些函数???当然不用,现在给大家个数据库操作类,里面包含了大多数,数据库操作的方法
在学习PHP进行数据库操作时,特别是对于初学者来说,可能会遇到一些挑战,尤其是在MySQL 4.1.x及以上版本中常见的编码问题,导致显示乱码。本文将详细介绍如何解决这些问题,并提供一个简单的数据库操作类,以简化PHP中的数据库交互。
我们需要了解在PHP中与MySQL数据库交互的基本函数。例如,`mysql_connect()`用于建立到MySQL服务器的连接,`mysql_select_db()`用来选择要使用的数据库。然而,当处理多个页面的数据库操作时,重复这些函数会显得繁琐。为了解决这个问题,我们可以创建一个数据库操作类,封装这些常用功能,使代码更简洁、可重用。
以下是一个示例的配置文件`config.inc.php`:
```php
<?php
// 数据库参数变量设定
$dbhost = "localhost"; // 主机名
$dbuser = "root"; // 连接账户
$dbpassword = "7529639"; // 连接密码
$dbname = "cr_download"; // 数据库名
// 根据你的数据库配置信息修改以上内容
?>
```
接着是数据库操作类`dbclass.php`:
```php
<?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->dbname);
}
// 创建数据库连接并选择相应数据库
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);
}
}
```
在这个数据库操作类中,我们定义了几个关键方法:
1. `mysql()`:初始化数据库连接参数。
2. `mycon()`:创建到MySQL服务器的连接。
3. `selectdb()`:选择要操作的数据库。
4. `createcon()`:创建连接并设置字符编码,解决乱码问题。
5. `fetch_array()`:执行SQL语句并获取一条记录作为数组。
6. `query()`:执行SQL语句,返回结果集。
7. `loop_query()`:循环遍历结果集,每次返回一条记录。
通过使用这个类,你可以轻松地在任何需要的地方调用数据库操作,而无需每次都编写相同的连接和查询代码。例如,要执行一个SQL查询,你只需实例化这个类,然后调用相关方法:
```php
require_once('config.inc.php');
require_once('dbclass.php');
$db = new db();
$db->mysql($dbhost, $dbuser, $dbpassword, $dbname);
$sql = "SELECT * FROM table_name";
$result = $db->query($sql);
while ($row = $db->fetch_array($result)) {
// 处理每行数据
}
```
在处理乱码问题时,注意到`createcon()`方法中使用了`mysql_query("SET NAMES 'GBK'")`,这将设置字符编码为GBK,以确保从数据库读取的数据正确显示。在Linux环境下,如果你的数据库使用的是UTF-8编码,应改为`mysql_query("SET NAMES 'UTF8'")`。
总结起来,本教程旨在帮助PHP初学者理解和解决数据库操作中遇到的常见问题,包括乱码和重复代码。通过创建数据库操作类,可以有效地组织代码,提高可维护性,并确保正确处理编码问题。在实际项目中,还可以根据需要扩展这个类,添加更多功能,如事务处理、错误处理等。