2012-02-15 24 views
6

PHP'de Mysqli kullanarak bir MySQL veritabanına bağlantı oluşturmaya çalışıyorum. Ben bağımsız bir sayfasında aşağıdaki kodu çalıştırdığınızda: Tüm ı outputted olsunYeni Mysqli Object is Null

<?php 
ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 

$link = new mysqli('localhost', 'myuser', 'mypass', 'dbname'); 
var_dump($link); 

tüm özellikleri null boş Mysqli nesnedir. Hata veya hiçbir şey görüntülenmiyor.

Ayrıca Apache veya MySQL günlüklerinde herhangi bir giriş görmüyorum. Bu konuda kayboldum.

+0

deneyin '$ link = new mysqli ('localhost', 'myuser', 'mypass', 'Dbname') ya da öl;' – crush

+1

@crush: Ayrıca, bazı örnek kod dahildir : Bence $ link = new mysqli ('localhost', 'myuser', 'mypass', 'dbname') veya die (mysqli_connect_error()); 'Mysqli_error()' işlevi, bir bağlantı tanımlayıcısını parametresi olarak bekler. –

+0

@Justin, Tavsiye ettiğin şeye değiştirdim ve hiç değişmedi. Mysqli nesnesini örnekledikten sonra, mysql_connect_error işlevi, hata olmadığında, null değerini döndürür. Mysqli nesnesinin özellikleri tamamen boş olsa da. $ Linkini döktüğümde: –

cevap

8

Bu sorunu da yaşadım ve hata ayıklamaya çalışırken çıldırıyordum. Bazen mysqli nesnesinin herhangi bir sebepten dolayı popülasyona uğramadığı ortaya çıkıyor, ancak doğrudan buradaki özelliklere erişmesi arkasındaki yerel kodu hala yürüyor. Yani tüm mysqli nesnesinin bir var_dump'ı boş özellikleri gösterse de, bunlara tek tek erişirseniz oradalar. Errorno false olursa, beklemediğiniz boş bir sonuç kümesiyle geçerli bir sorgu çalıştırmış olabilirsiniz. Bu yardımcı olur umarım.

$mysqli = mysqli_connect('localhost', 'root', '', 'test', 3306); 

var_dump($mysqli); 

var_dump($mysqli->client_info); 
var_dump($mysqli->client_version); 
var_dump($mysqli->info); 

ve çıkış: Bu biraz eski, ama yine de yinelenen bir konu olarak bu olan herkes için biliyorum

object(mysqli)[1] 
    public 'affected_rows' => null 
    public 'client_info' => null 
    public 'client_version' => null 
    public 'connect_errno' => null 
    public 'connect_error' => null 
    public 'errno' => null 
    public 'error' => null 
    public 'field_count' => null 
    public 'host_info' => null 
    public 'info' => null 


public 'insert_id' => null 
    public 'server_info' => null 
    public 'server_version' => null 
    public 'stat' => null 
    public 'sqlstate' => null 
    public 'protocol_version' => null 
    public 'thread_id' => null 
    public 'warning_count' => null 

string 'mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $' (length=50) 
int 50008 
null 
int 0 
string 'localhost via TCP/IP' (length=20) 
string '5.5.20-log' (length=10) 
int 50520 
+0

Sadece bu sorunla karşılaştım ve çözümünüz işe yaradı, ancak 'print_r 'nesnesini de uygun şekilde basacak buldum. – user3158900

1

, danperron en yazılan user3158900 gelen açıklama çözümü vardır. Burayı daha görünür kılmak için yeniden gönderiyorum. (Mysqli_error())

global $mysqli; //assuming you've already created your $mysqli object 
$mysqli->query("INSERT INTO users SET username='jim' and password='somehash'"); 
var_dump($mysqli); //prints the full object but all the values are null 

//the following code prints the full object with appropriate values such as 
//insert_id, affected_rows, etc 
//view http://pastebin.com/Mgd2CZsM for an example of this output 
echo "<pre>" . print_r($mysqli, true). "</pre>"; 
İlgili konular