/*一个文件MySQLDB.class.php中包含了一个类来连接数据库、
执行语句的方法、
将查询到的结果集通过数组返回的方法。
*/
<?php
//类名与文件名类似
//可连接数据库
//并实现其单类模式,
//还能完成基本mysql模式
//执行普通的增删改非返回结果集的语句
//执行select语句并可以返回3中类型的数据:
//多行结果(二维数组),单行结果(一维数组),单行单列(数据)
class MySQLDB{
public $host; //连接主机
public $port; //连接端口
public $username; //连接用户名
public $password; //连接密码
public $charset; //连接编码
public $dbname; //连接数据库名
private static $link; //实现该类的单例对象
private $resource; //连接数据库返回的资源
//禁止new
private function __construct($config){
/*通过__construct方法来将所需连接数据库信息传入
*/
$this->host = isset($config['host']) ? $config['host'] : 'localhost';
$this->port = isset($config['port']) ? $config['port'] : '3306';
$this->username = isset($config['username']) ? $config['username'] : 'root';
$this->password = isset($config['password']) ? $config['password'] : 'forlove123';
$this->charset = isset($config['charset']) ? $config['charset'] : 'utf8';
$this->dbname = isset($config['dbname']) ? $config['dbname'] : 'newphp';
//连接数据库的函数调用,没件事独立使用
$this->connect();
//设定连接编码
$this->setCharset($this->charset);
//选定数据库
$this->selectDb($this->dbname);
}
public static function getInstance($config){
if(!isset(self::$link)){
self::$link = new self($config); //参数问题
}
return self::$link;
}
//禁止克隆
private function __clone(){}
public function connect(){
$this->resource = mysql_connect("$this->host:$this->port", "$this->username", "$this->password") or die("连接数据库失败");
}
public function setCharset($charset){
//mysql_set_charset($charset, self::$link);
mysql_query("set names $charset"); //设置编码失败易于显示错误
}
public function selectDb($dbname){
//mysql_select_db($dbname, self::$link);
mysql_query("use $dbname"); //选择数据库失败易于显示错误
}
/*
功能执行sql语句
返回,失败直接结束,成功则返回执行结果
*/
public function query($sql){
if(!$result = mysql_query($sql, $this->resource)){
echo "<br / >执行语句失败";
echo "<br />执行失败语句为:".$sql;
echo "<br />出错信息为:".mysql_error();
echo "<br />错误代号为:".mysql_errno();
die();
}
return $result;
}
/*
执行select语句返回二维数组
参数:$sql 字符串类型 select语句
*/
public function getAll($sql){
$result = $this->query($sql);
$arr = array();
while( $rec = mysql_fetch_assoc( $result )){
$arr[] = $rec;
}
return $arr;
}
public function getRow($sql){
$result = $this->query($sql);
while( $rec = mysql_fetch_assoc( $result )){ //返回下标为字段名的下标
//如果取得了一行数据
return $rec;
}
return false;
}
public function getOne($sql){
$result = $this->query($sql); //结果集为0行也不会判断为false, 它是资源
$rec = mysql_fetch_row($result); //返回下标为数字的数组,且下标一定为0,1,2,3
if($rec == false){
return false;
}
return $rec[0];
}
}
/*
测试文件:MysqlDb_use.php
*/
<?php
require 'MySQLDB.class.php'; //导入上文件
$config = array(
'host' => 'localhost',
'port' => '3306',
'username' => 'root',
'password' => 'forlove123',
'charset' => 'utf8',
'dbname' => 'newphp'
); //设置连接数据库信息
$link = MySQLDB::getInstance( $config ); //单例话一个对象那个
//var_dump($link);
//任务1:插入数据:
$sql = "insert into money(zhanghu, cunkuan) values ('test3', 10000)";
if( $link ->query($sql) )
echo "执行成功";
//任务2获取账户所有信息
$sql = "select * from money";
$result = $link->getAll($sql);
echo "<pre>";
//print_r($result);
echo "<table border = '1'>";
foreach ($result as $rows){
echo "<tr>";
foreach ($rows as $key => $value){
echo "<td>$value</td>";
}
echo "</tr>";
}
echo "</table>";
echo "</pre>";
//任务3:获取某个账户信息(一行数据):
$sql = "select * from money where id = 1";
$result = $link->getRow($sql); //得到一维数组
if($result){
echo "<br />账户ID:".$result['id'];
echo "<br />账户名:".$result['zhanghu'];
echo "<br />存款为:".$result['cunkuan'];
}
else
echo "<br />账户不存在!!!";
//获取银行的存款总和
$sql = "select sum(cunkuan) as s from money ";
$result = $link->getOne($sql);
if($result)
echo "<br />总存款为:".$result;
else
echo "";
?>
测试结果为:

本文介绍了一个用于操作MySQL数据库的PHP类,支持多种数据返回格式,包括二维数组、一维数组及单个值。提供了连接数据库、执行SQL语句等功能,并演示了如何使用此类进行数据插入、查询等操作。

654

被折叠的 条评论
为什么被折叠?



