mysql数据库类中出现的问题
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);
}
想不出什么原因
回复讨论(解决方案)
//读取数据库的配置信息
protected function __construct(){
你把构造函数指定成 保护模式
如何能被执行?

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...
