我有以下代碼:爲什麼不能通過foreach或get_object_vars訪問PHP mysqli_stmt屬性?
//preparing statement, executing and so on is omitted...
//$this->cur_query_stmt is object returned by prepare() function
var_dump($this->cur_query_stmt);
foreach($this->cur_query_stmt as $k=>$v){
var_dump($k);
var_dump($v);
}
這段代碼的輸出:
object(mysqli_stmt)#6 (9) {
["affected_rows"]=>
int(1)
["insert_id"]=>
int(7)
["num_rows"]=>
int(0)
["param_count"]=>
int(1)
["field_count"]=>
int(0)
["errno"]=>
int(0)
["error"]=>
string(0) ""
["sqlstate"]=>
string(5) "00000"
["id"]=>
int(2)
}
string(13) "affected_rows"
NULL
string(9) "insert_id"
NULL
string(8) "num_rows"
NULL
string(11) "param_count"
NULL
string(11) "field_count"
NULL
string(5) "errno"
NULL
string(5) "error"
NULL
string(8) "sqlstate"
NULL
string(2) "id"
NULL
任何人都可以解釋爲什麼所有的值都爲NULL返回?
我可以通過調用$ this-> cur_query_stmt - > $ this-> affected_rows來得到它們,但是當試圖讓它們在foreach或get_object_vars函數中時,我會得到NULL。我很困惑,請幫忙!
只是好奇,爲什麼你想他們在一個循環? –
其實我想通過get_object_vars函數獲取它們,但是由於它給了我空值,我試圖讓它們處於循環中。我將它存儲爲通過執行查詢的函數返回 –