0

私は次のコードを持っています:

//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が取得されます。私は混乱しています、助けてください!

4

2 に答える 2

0

mysqli_stmt には、そのプロパティ値を生成するための _constructor() がありません。"affected_rows" を取得するには、代わりに $this->cur_query_stmt->$this->affected_rows を呼び出す必要があります。

于 2013-01-17T10:50:47.287 に答える
0

遅い答えですが、これがあなたがやろうとしていることだと思います:

   array_result=array();
   foreach ($stmt as $key => $value) {
       $array_result[$key]=$stmt->$key;
    }
于 2019-07-01T21:20:16.463 に答える