これは基本的な質問ですが、知識が不足しているため、mysqli_resultを配列に変換して結果を取得した方法を知りたいと思います。ここでMysqliは結果セットを配列に変換しました
は、データベースである:ここでは
CREATE TABLE IF NOT EXISTS `slider` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
INSERT INTO `slider` (`id`, `title`) VALUES
(1, 'Slider 1'),
(2, 'Slider 2'),
(3, 'Slider 3'),
(4, 'Slider 4'),
(5, 'Slider 5'),
(6, 'Slider 6'),
(7, 'Slider 7'),
(8, 'Slider 8');
は、PHPファイルです:
$mysqli = new mysqli('host', 'user', 'pass', 'db',port);
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
$query = "SELECT * FROM slider ORDER BY id";
if ($result = $mysqli->query($query)) {
echo "<pre>"; print_r($result); //This is mysqli_result Object
foreach($result as $row) { //Here is the magic how it is converted and row is retrieved
//echo "<pre>"; print_r($row);
printf ("<br>%s (%s)\n", $row["id"], $row["title"]);
}
while ($row = $result->fetch_assoc()) { //Normal way
//echo "<pre>"; print_r($row);
printf ("<br>%s (%s)\n", $row["id"], $row["title"]);
}
$result->free();
}
我々はしばらくを横断するとき、我々はFETCH_ *メソッドを使用して結果を取得しなければならないのが、私が通過横断したときにforeach、結果の取得方法は?どのように暗黙のうちに、foreachループはfetch_ *を呼び出していますか?
これは 'Traversable'インターフェースを実装しているクラスなので、' foreach() 'を使うと自動的にフェッチします。 – Barmar
興味深いことに、私はそれを通過します。 – Kamal