php özel db arabirim sınıfı - Seçilen veritabanı yok

2 Cevap php

Ben şu db arabirim sınıfı yazdım:

<?php

// dbinterface.php

class db {
    private $con;
    private $host;
    private $user;
    private $pass;
    private $database;
    private $error;

    function db($host, $user, $pass, $database) {
    	$this->con = mysql_connect($host, $user, $pass);
    	mysql_select_db($database);
    }

    function escape($text) {
    	return mysql_real_escape_string($text);
    }

    function run($query) {
    	$q = mysql_query($query);
    	if ($q === false) {
    		$this->error = "Error " . mysql_errno() . ": " . mysql_error($this->con);
    		return false;
    	} elseif ($q === true) {
    		return true;
    	} else {
    		$result = array();
    		while ($row = mysql_fetch_assoc($q)) {
    			array_push($result, $row);
    		}
    		return $result;
    	}
    }

    function get_error() {
    	return $this->error;
    }

    function cose() {
    	mysql_close($this->con);
    }
}


?>

Sorun ben onunla bir sorgu çalıştırmayı denediğinizde nedense, ben hata alıyorum şudur: Hiçbir veritabanı seçilir. Ama benim kod kurucusuna onu seçer. Ben teslim ve ben doğru db adını geçirerek emin yaptı. ve ben aslında geçti alıyorsanız emin yaptı.

2 Cevap

Her zaman yerleşik fonksiyonların geri dönüş değerlerini kontrol etmelisiniz. Böyle bir şey deneyin ve bir cevap alabilirsiniz:

function db($host, $user, $pass, $database) {
    if (($this->con = mysql_connect($host, $user, $pass)) === false) {
        throw new Exception(mysql_error());
    }
    if (!mysql_select_db($database)) {
        throw new Exception(mysql_error());
    }
}

Bu sınıf benim için çalışıyor ... kesinlikle ama kontrol daha fazla hata yapıyor olmalıdır. Ben sonraki arıyor olurdu orası yani var olmayan bir veritabanı belirtmek eğer "Hayır veritabanı seçilen" hatası alabilirsiniz.

EDIT: mysql_select_db dönüş değerini () Test ve hata tetikleyebilir ya da return true değilse bir istisna atar.