Anch'io ho avuto questo problema e stavo impazzendo cercando di eseguirne il debug. Si scopre che a volte per qualsiasi motivo l'oggetto mysqli non viene popolato, ma l'accesso diretto alle sue proprietà esegue comunque il codice nativo dietro di esso. Quindi, anche se un var_dump dell'intero oggetto mysqli mostra proprietà null, sono presenti se accedi individualmente. Se errorno risulta essere falso, potresti aver eseguito una query valida con un set di risultati vuoto che non ti aspettavi. Spero che questo aiuti.
$mysqli = mysqli_connect('localhost', 'root', '', 'test', 3306);
var_dump($mysqli);
var_dump($mysqli->client_info);
var_dump($mysqli->client_version);
var_dump($mysqli->info);
e l'output:
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