程序风格和面向对象的风格

时间:2016-05-19 21:35:20

标签: mysqli

我有点困惑为什么当我从程序风格转变为面向对象的风格时,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时,循环变为无限。 (我正在以程序风格和面向对象的风格来回跳跃,因为我正在练习它)

1 个答案:

答案 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); 
 }

否则它将运行您的查询两次。