mysql
これは db 抽象クラスから継承された mysql クラスで、db の抽象メソッドが mysql に実装されています。
db class:
abstract class db{
//データベースに接続します
abstract public function connect($h, $u ,$p);
//クエリを送信
abstract public function query($sql);
//複数行のデータをクエリ
abstract public function getAll($sql);
//単一行のデータをクエリ
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 $conf=array() // データベースの構成情報を読み取る
protected 関数 __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(){
}
//シングルトン モードを使用し、新規は 1 回のみ許可します
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 関数 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 '失敗
'
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;
$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); // データの一部を取得しますdata
public function getOne($sql){
$rs=$this->query($sql);
$row=mysql_fetch_assoc($rs);
return $row[0] }
//影響を受けるデータ
public function inspired_rows(){
return mysql_affected_rows($this->conn)
}
//ID を挿入
public function insert_id(){
return mysql_insert_id($this->conn); }
}
なぜ警告: mysql_ query (): provided argument is not a valid MySQL-Link resource
多くのエラーをトラブルシューティングした後、プログラムがこのステップに到達していないことがわかりました
public function connect($h,$u, $p){
//このステップに到達していません
$this->conn=mysql_connect($h,$u,$p);
}
理由が思いつかない
ディスカッションに返信(解決策)
//データベースの構成情報を読み取る
protected function __construct (){
プロテクトモードでコンストラクタを指定した場合、どのように実行すればよいでしょうか?