制作一个PHP数据库操作类。还缺一些东西,如:写入日志、持久性连接处理等,以后慢慢再完善。
1、配置文件conn.ini.php
<?php
//数据库配置文件
$host = "127.0.0.1";
$dbUser = "root";
$dbPassword = "root";
$db = "phpstu";
$encode = "utf8"
?>
2、数据库操作类文件Mysql.class.php
<?php
class MySql {
private $conn = "";
public function __construct() {
return $this->connect();
}
//连接数据库、设置编码
public function connect() {
require_once ("conn.ini.php");
$this->conn = @ mysql_connect($host, $dbUser, $dbPassword);
if (!$this->conn)
$this->error_msg("数据库服务器连接失败!");
if (!@ mysql_select_db($db))
$this->error_msg("数据库连接失败!");
mysql_set_charset($encode);
}
//执行非查询SQL语句
public function excute($sql) {
$result = @ mysql_query($sql);
if (!$result)
$this->error_msg("请检查SQL语句!");
return $result;
}
//新增
public function add($table, $dataArr) {
if (!is_array($dataArr) || count($dataArr) == 0) {
$this->error_msg("插入数据为空!请检查!");
return false;
}
$fields = "";
$values = "";
//$fields = implode(",", array_keys($dataArr));
//$values = implode(",", array_values($dataArr)); //使用这种方法产生的字符串,不带单引号,执行SQL语句时出错。
while (list ($key, $value) = each($dataArr)) {
$fields .= "`$key`,";
$values .= "'$value',";
}
$fields = substr($fields, 0, -1);
$values = substr($values, 0, -1);
$sql = "insert into $table ($fields) values ($values)";
if (!$this->excute($sql))
return false;
return true;
}
//更新全部,慎重调用!
public function updateAll($table, $dataArr) {
if (!is_array($dataArr) || count($dataArr) == 0) {
$this->error_msg("更新数据为空!请检查!");
return false;
}
$values = "";
while (list ($key, $value) = each($dataArr))
$values .= "`$key`='$value',";
$values = substr($values, 0, -1);
$sql = "update $table set $values";
echo "$sql";
if (!$this->excute($sql))
return false;
return true;
}
//根据条件更新
public function update($table, $dataArr, $where = "") {
if (empty ($where)) {
$this->error_msg("更新条件不能为空!");
return false;
}
if (!is_array($dataArr) || count($dataArr) == 0) {
$this->error_msg("更新数据为空!请检查!");
return false;
}
$values = "";
while (list ($key, $value) = each($dataArr))
$values .= "$key='$value',";
$values = substr($values, 0, -1);
$sql = "update $table set $values where $where";
if (!$this->excute($sql))
return false;
return true;
}
//删除全部
public function delAll($table) {
$sql = "delete from $table";
if (!$this->excute($sql))
return false;
return true;
}
//根据条件删除
public function del($table, $where = "") {
if (empty ($where)) {
$this->error_msg("删除条件不能为空!");
return false;
}
$sql = "delete from $table where $where";
if (!$this->excute($sql))
return false;
return true;
}
//查询,获取符合条件的全部记录
//$result_type可选值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH
public function getAll($sql, $result_type = MYSQL_ASSOC) {
$rows = array ();
$result = @ mysql_query($sql);
if (!$result)
$this->erro_msg("查询失败,请检查SQL语句!");
while ($row = mysql_fetch_array($result, $result_type)) {
$rows[] = $row;
}
return $rows;
}
//查询,获取一条记录
//$result_type可选值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH
public function getOne($sql, $result_type = MYSQL_ASSOC) {
$result = @ mysql_query($sql);
if (!$result)
$this->erro_msg("查询失败,请检查SQL语句!");
$row = mysql_fetch_array($result, $result_type);
return $row;
}
//获取新插入的ID
public function getInsertId() {
//$id = mysql_insert_id(); //这个方法有获取不准确的可能,不建议使用,所以注释掉了。
$row = $this->getOne("select LAST_INSERT_ID()", MYSQL_NUM);
return $row[0];
}
//获取记录条数
public function getRecordNum($sql) {
$result = @ mysql_query($sql);
if (!$result)
$this->erro_msg("查询失败,请检查SQL语句!");
return mysql_num_rows($result);
}
//获取执行SQL语句影响的行数
//关于这个方法还有一些疑问的地方,比如:官方手册中说此方法只对非查询语句起作用,但我在测试的时候发现查询语句也可以。以后有空再研究吧!
public function getAffectedRows() {
return mysql_affected_rows();
}
//错误提示信息
public function error_msg($msg = "") {
$msg .= "<br />" . mysql_error();
$msg = "<div style='color=\"red\"'>" . $msg . "</div>";
die($msg);
}
//释放资源,点位,待研究
public function freeResult() {
}
//关闭数据库连接
//对于永久性连接,需要手动关闭,具体的知识还需要花时间研究,先放个空方法在这里占位。
public function close() {
}
//析构函数
public function __destruct() {
}
}
?>