请问怎么样,才能写一次链接数据库的语句,
大家都是怎么样操作的啊?
请大家多多指导!!
aa表对应的类aa.php
class aa{
var $conn;
public $adds_id;
public $adds_title;
public $adds_content;
public $adds_time;
function __construct() {
// 连接数据库
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming"); //连接数据库
mysqli_query($this->conn, "SET NAMES gbk");
}
function __destruct() {
// 关闭连接
mysqli_close($this->conn);
}
// 插入新记录
function insert(){
$sql = "insert into aa values('', '" . $this->adds_title . "', '" . $this->adds_content . "',". $this->adds_time .")";
$this->conn->query($sql);
}
}
bb表对应的类bb.php
class bb{
var $conn;
public $y_id;
public $UserName; // 用户名,保存当前的用户名
public $UserPwd; // 用户密码
function __construct() {
// 连接数据库 ,声明类对象时,执行此构造函数
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming"); //这里又要连接数据库
mysqli_query($this->conn, "SET NAMES gbk");
}
function __destruct() {
// 关闭连接
mysqli_close($this->conn);
}
// 判断指定用户是否存在
function exists($user){ //参数$user 表示指定的 用户名
$result = $this->conn->query("select username,pwd from bb where username='" . $user . "'");
if($row = $result->fetch_array()) {
$this->UserName = $user;
$this->UserPwd = $row['pwd'];
return true;
}
else
return false;
}
}
13 个解决方案
#1
可以设置一个全局变量, 存放连接的ID
#2
还可以用继承, 但你要优化一下,
#3
<?php
class base
{
var $conn;
function __construct() {
// 连接数据库 ,声明类对象时,执行此构造函数
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming"); //这里又要连接数据库
mysqli_query($this->conn, "SET NAMES gbk");
}
function __destruct() {
// 关闭连接
mysqli_close($this->conn);
}
}
class aa extends base {}
class bb extends base {}
?>
#4
学习学习~~~~~~~~~~~····
#5
可以看一下Zend_Db,
或者简单地用sington模式,网上大把的例子
或者简单地用sington模式,网上大把的例子
#6
写错了,singleton
class Db
{
protected static $_instance;
private $conn;
private function __construct(){
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming");
mysqli_query($this->conn, "SET NAMES gbk");
}
private function __clone(){ }
public static function getInstance()
{
if( self::$_instance === NULL ) {
self::$_instance = new self();
}
return self::$_instance;
}
public function query($sql){
//....
}
}
在任何需要的地方直接用就行了:
Db::getInstance()->query($sql);
当然,这样只是一个数据库连接,(大部分应用已经没问题了)
如果你需要两个,可以建2个这样的class,
或者建一个带2个instance的singleton,
或者更好地,用Registry模式, (registry模式可以很好地代替全局变量 global),
如果你要很多连接,而且会连接到不同数据库...etc, 那就看zend_Db,它综合了几种模式.
class Db
{
protected static $_instance;
private $conn;
private function __construct(){
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming");
mysqli_query($this->conn, "SET NAMES gbk");
}
private function __clone(){ }
public static function getInstance()
{
if( self::$_instance === NULL ) {
self::$_instance = new self();
}
return self::$_instance;
}
public function query($sql){
//....
}
}
在任何需要的地方直接用就行了:
Db::getInstance()->query($sql);
当然,这样只是一个数据库连接,(大部分应用已经没问题了)
如果你需要两个,可以建2个这样的class,
或者建一个带2个instance的singleton,
或者更好地,用Registry模式, (registry模式可以很好地代替全局变量 global),
如果你要很多连接,而且会连接到不同数据库...etc, 那就看zend_Db,它综合了几种模式.
#7
继承同一个基类
可以把链接字符串放在基类的static成员变量中
可以把链接字符串放在基类的static成员变量中
#8
补充3楼的
<?php
class base
{
var $conn;
function __construct() {
// 连接数据库 ,声明类对象时,执行此构造函数
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming"); //这里又要连……
[/Quote]
class aa extends base{
function __construct()
{
parent::__construct();
}
}
function aa($uid)
{
$this->db->query();
}}
<?php
class base
{
var $conn;
function __construct() {
// 连接数据库 ,声明类对象时,执行此构造函数
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming"); //这里又要连……
[/Quote]
class aa extends base{
function __construct()
{
parent::__construct();
}
}
function aa($uid)
{
$this->db->query();
}}
#9
顺便说一下, 用继承的话,一个缺点是该类就不能再继承别的类的
#10
恩,不错,把数据库链接单个弄成个类,用单态模式获取实例,既节省资源,提高效率,还方便快捷
#11
include_once()方法能实现吗?
#12
继承pdo类,用它来处理还是不错的!
#13
可以用继承,把两个类里面都存在的对数据库的连接的操作,都放在父类里。子类全都是一些对各表的查询操作。
不过从MVC角度讲,数据库的连接的操作其实应该算是model层,而你对各表的连接应该属于control层。应该分开才合理。
你可以把对数据库的连接的操作,都放在a类里,new出来的对象作为参数传到b类里面使用。
不过从MVC角度讲,数据库的连接的操作其实应该算是model层,而你对各表的连接应该属于control层。应该分开才合理。
你可以把对数据库的连接的操作,都放在a类里,new出来的对象作为参数传到b类里面使用。
#1
可以设置一个全局变量, 存放连接的ID
#2
还可以用继承, 但你要优化一下,
#3
<?php
class base
{
var $conn;
function __construct() {
// 连接数据库 ,声明类对象时,执行此构造函数
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming"); //这里又要连接数据库
mysqli_query($this->conn, "SET NAMES gbk");
}
function __destruct() {
// 关闭连接
mysqli_close($this->conn);
}
}
class aa extends base {}
class bb extends base {}
?>
#4
学习学习~~~~~~~~~~~····
#5
可以看一下Zend_Db,
或者简单地用sington模式,网上大把的例子
或者简单地用sington模式,网上大把的例子
#6
写错了,singleton
class Db
{
protected static $_instance;
private $conn;
private function __construct(){
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming");
mysqli_query($this->conn, "SET NAMES gbk");
}
private function __clone(){ }
public static function getInstance()
{
if( self::$_instance === NULL ) {
self::$_instance = new self();
}
return self::$_instance;
}
public function query($sql){
//....
}
}
在任何需要的地方直接用就行了:
Db::getInstance()->query($sql);
当然,这样只是一个数据库连接,(大部分应用已经没问题了)
如果你需要两个,可以建2个这样的class,
或者建一个带2个instance的singleton,
或者更好地,用Registry模式, (registry模式可以很好地代替全局变量 global),
如果你要很多连接,而且会连接到不同数据库...etc, 那就看zend_Db,它综合了几种模式.
class Db
{
protected static $_instance;
private $conn;
private function __construct(){
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming");
mysqli_query($this->conn, "SET NAMES gbk");
}
private function __clone(){ }
public static function getInstance()
{
if( self::$_instance === NULL ) {
self::$_instance = new self();
}
return self::$_instance;
}
public function query($sql){
//....
}
}
在任何需要的地方直接用就行了:
Db::getInstance()->query($sql);
当然,这样只是一个数据库连接,(大部分应用已经没问题了)
如果你需要两个,可以建2个这样的class,
或者建一个带2个instance的singleton,
或者更好地,用Registry模式, (registry模式可以很好地代替全局变量 global),
如果你要很多连接,而且会连接到不同数据库...etc, 那就看zend_Db,它综合了几种模式.
#7
继承同一个基类
可以把链接字符串放在基类的static成员变量中
可以把链接字符串放在基类的static成员变量中
#8
补充3楼的
<?php
class base
{
var $conn;
function __construct() {
// 连接数据库 ,声明类对象时,执行此构造函数
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming"); //这里又要连……
[/Quote]
class aa extends base{
function __construct()
{
parent::__construct();
}
}
function aa($uid)
{
$this->db->query();
}}
<?php
class base
{
var $conn;
function __construct() {
// 连接数据库 ,声明类对象时,执行此构造函数
$this->conn = mysqli_connect("localhost", "root", "", "shujukuming"); //这里又要连……
[/Quote]
class aa extends base{
function __construct()
{
parent::__construct();
}
}
function aa($uid)
{
$this->db->query();
}}
#9
顺便说一下, 用继承的话,一个缺点是该类就不能再继承别的类的
#10
恩,不错,把数据库链接单个弄成个类,用单态模式获取实例,既节省资源,提高效率,还方便快捷
#11
include_once()方法能实现吗?
#12
继承pdo类,用它来处理还是不错的!
#13
可以用继承,把两个类里面都存在的对数据库的连接的操作,都放在父类里。子类全都是一些对各表的查询操作。
不过从MVC角度讲,数据库的连接的操作其实应该算是model层,而你对各表的连接应该属于control层。应该分开才合理。
你可以把对数据库的连接的操作,都放在a类里,new出来的对象作为参数传到b类里面使用。
不过从MVC角度讲,数据库的连接的操作其实应该算是model层,而你对各表的连接应该属于control层。应该分开才合理。
你可以把对数据库的连接的操作,都放在a类里,new出来的对象作为参数传到b类里面使用。