我有点困惑为什么当我从程序风格转变为面向对象的风格时,while循环很好?
这是我脚本顶部的php块:
$object = new mysqli('localhost', 'readmode', 'p@5sW0rd', 'practices');
$sql = 'SELECT * FROM paintings';
$result = $object->query($sql);
if ($object->connect_error) {
$error = $object->connect_error;
} else {
$num_rows = mysqli_num_rows (mysqli_query($object, $sql));
}
这是我的html中的php代码:
<?php if (isset($error)) {
echo "<p>$error</p>";
} else { ?>
<pre><?php while ($rowinfo = mysqli_fetch_assoc($result)) {
print_r ($rowinfo);
} ?></pre>
<?php } ?>
当我使用$object->query($sql)
代替$result
时,循环变为无限。
(我正在以程序风格和面向对象的风格来回跳跃,因为我正在练习它)
答案 0 :(得分:0)
因不知道如何提问而闻名
伤心但真实。
如果你的某些代码不起作用,最好发布这些代码而不是写一篇长篇文章解释。
当你正在制作时
while ($rowinfo = mysqli_fetch_assoc($object->query($sql)))
它确实会产生一个无限循环,因为你让你的SQL查询反复运行。
问题与对象语法无关,它与程序也一样。您应该使用结果而不是再次调用查询。
实质上,您只需运行一次查询**。 **
这也使您的其他代码段错误。它应该是
$object = new mysqli('localhost', 'readmode', 'p@5sW0rd', 'practices');
$sql = 'SELECT * FROM paintings';
$result = $object->query($sql);
if ($object->connect_error) {
$error = $object->connect_error;
} else {
$num_rows = mysqli_num_rows($result);
}
否则它将运行您的查询两次。