mysql数据库类中出现的问题
程序员文章站
2024-01-23 12:34:22
...
mysql 这是我的mysql类,继承至db抽象类,其中db的抽象方法在mysql中都以实现,
db类:
abstract class db{
//连接数据库
abstract public function connect($h,$u,$p);
//发送查询
abstract public function query($sql);
//查询多行数据
abstract public function getAll($sql);
//查询单行数据
abstract public function getOne($sql);
//查询单个数据
abstract public function getRow($sql);
abstract public function autoExecute($arr,$table,$mode='insert ',$where='1 limit 1');
}
class mysql extends db{
private static $ins=null;
private $conn=null;
private $conf=array();
//读取数据库的配置信息
protected function __construct(){
$this->conf=conf::getIns();
$this->select_db($this->conf->db);
$this->connect($this->conf->host,$this->conf->user,$this->conf->pwd);//显示是空
$this->setChar($this->conf->char);
}
public function __destruct(){
}
//使用单例模式,只允许new一次
public static function getIns(){
if(self::$ins===null){
self::$ins=new self();
}
return self::$ins;
}
//连接,连接失败时,抛出异常
public function connect($h,$u,$p){
//没走到这一步
$this->conn=mysql_connect($h,$u,$p);
}
protected function select_db($db){
$sql='use '.$db;
$this->query($sql);
}
protected function setChar($char){
$sql='set names '.$char;
return $this->query($sql);
}
//发送数据
public function query($sql){
/*if($this->conf->debug){
log::write($sql);
}*/
/* var_dump($sql);
exit;*/
$rs=mysql_query($sql,$this->conn);
/*if(!rs){
log::write($this->error());
}*/
if(!$rs){
echo '失败
';
var_dump($this->conn);
echo '
';
var_dump($this->conf);
}
return $rs;
}
//自动进行计算
public function autoExecute($arr,$table,$mode='insert ',$where='1 limit 1'){
if(!is_array($arr)){
return false;
}//更新表中的数据
if($mode=='update'){
$sql='update '.$table.'set';
foreach($arr as $k=>$v){
$sql.=$k."='".$v."',";
}
$sql=rtrim($sql,',');
$sql.=$where;
return $this->query($sql);
}
$sql='insert into '.$table.'('.implode(',',array_keys($arr)).')';
$sql.='values(\'';
$sql.=implode("','",array_values($arr));
$sql.='\')';
return $this->query($sql);
}
//取出表中所有符合条件的多行数据
public function getAll($sql){
$rs=$this->query($sql);
$list=array();
while($row=mysql_fetch_assoc($rs)){
$list[]=$row;
}
return $list;
}
//取出符合条件的一行数据
public function getRow($sql){
$rs=$this->query($sql);
return mysql_fetch_assoc($rs);
}
//取出一个数据
public function getOne($sql){
$rs=$this->query($sql);
$row=mysql_fetch_assoc($rs);
return $row[0];
}
//取出影响的数据
public function affected_rows(){
return mysql_affected_rows($this->conn);
}
//插入一个id
public function insert_id(){
return mysql_insert_id($this->conn);
}
}
为什么会出现:Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource
排查了很多错误,发现程程序没有走到
public function connect($h,$u,$p){
//没走到这一步
$this->conn=mysql_connect($h,$u,$p);
}
想不出什么原因
db类:
abstract class db{
//连接数据库
abstract public function connect($h,$u,$p);
//发送查询
abstract public function query($sql);
//查询多行数据
abstract public function getAll($sql);
//查询单行数据
abstract public function getOne($sql);
//查询单个数据
abstract public function getRow($sql);
abstract public function autoExecute($arr,$table,$mode='insert ',$where='1 limit 1');
}
class mysql extends db{
private static $ins=null;
private $conn=null;
private $conf=array();
//读取数据库的配置信息
protected function __construct(){
$this->conf=conf::getIns();
$this->select_db($this->conf->db);
$this->connect($this->conf->host,$this->conf->user,$this->conf->pwd);//显示是空
$this->setChar($this->conf->char);
}
public function __destruct(){
}
//使用单例模式,只允许new一次
public static function getIns(){
if(self::$ins===null){
self::$ins=new self();
}
return self::$ins;
}
//连接,连接失败时,抛出异常
public function connect($h,$u,$p){
//没走到这一步
$this->conn=mysql_connect($h,$u,$p);
}
protected function select_db($db){
$sql='use '.$db;
$this->query($sql);
}
protected function setChar($char){
$sql='set names '.$char;
return $this->query($sql);
}
//发送数据
public function query($sql){
/*if($this->conf->debug){
log::write($sql);
}*/
/* var_dump($sql);
exit;*/
$rs=mysql_query($sql,$this->conn);
/*if(!rs){
log::write($this->error());
}*/
if(!$rs){
echo '失败
';
var_dump($this->conn);
echo '
';
var_dump($this->conf);
}
return $rs;
}
//自动进行计算
public function autoExecute($arr,$table,$mode='insert ',$where='1 limit 1'){
if(!is_array($arr)){
return false;
}//更新表中的数据
if($mode=='update'){
$sql='update '.$table.'set';
foreach($arr as $k=>$v){
$sql.=$k."='".$v."',";
}
$sql=rtrim($sql,',');
$sql.=$where;
return $this->query($sql);
}
$sql='insert into '.$table.'('.implode(',',array_keys($arr)).')';
$sql.='values(\'';
$sql.=implode("','",array_values($arr));
$sql.='\')';
return $this->query($sql);
}
//取出表中所有符合条件的多行数据
public function getAll($sql){
$rs=$this->query($sql);
$list=array();
while($row=mysql_fetch_assoc($rs)){
$list[]=$row;
}
return $list;
}
//取出符合条件的一行数据
public function getRow($sql){
$rs=$this->query($sql);
return mysql_fetch_assoc($rs);
}
//取出一个数据
public function getOne($sql){
$rs=$this->query($sql);
$row=mysql_fetch_assoc($rs);
return $row[0];
}
//取出影响的数据
public function affected_rows(){
return mysql_affected_rows($this->conn);
}
//插入一个id
public function insert_id(){
return mysql_insert_id($this->conn);
}
}
为什么会出现:Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource
排查了很多错误,发现程程序没有走到
public function connect($h,$u,$p){
//没走到这一步
$this->conn=mysql_connect($h,$u,$p);
}
想不出什么原因
回复讨论(解决方案)
//读取数据库的配置信息
protected function __construct(){
你把构造函数指定成 保护模式
如何能被执行?
推荐阅读
-
mysql数据库类中出现的问题
-
mysql-关于QT4.8.6连接Mysql5.6中文数据库名异常的问题
-
php-mysql 问题笔记一——在命令行中可以执行的sql语句,无法从php页面页面执行!
-
mysqlreport显示Com_中change_db占用比例高的问题的解决方法_MySQL
-
MySQL中无GROUP BY情况下直接使用HAVING语句的问题探究_MySQL
-
基于mysql数据库 关于sql优化的一些问题
-
Mysql中“_” 的搜索问题_MySQL
-
基于tungsten API 同步mysql binlog出现EOF packet received的问题解决
-
解析SQLite中的常见问题与总结详解_MySQL
-
关于sql数据库维护失败的问题查找方法_MySQL