【问题标题】:mysql_fetch_array() doing infinite loopsmysql_fetch_array() 执行无限循环
【发布时间】:2012-10-14 16:05:28
【问题描述】:

我不知道为什么,一个应该是有限的循环,比如

while ($noticia = mysql_fetch_array(mysql_query("SELECT * FROM noticias WHERE deletada='0' ORDER BY id ASC")))
{
    // echo $noticia['blabla'];
}

正在执行无限循环,页面无法加载...

为什么会这样?

【问题讨论】:

  • 因为每次执行查询时都会获取数据
  • mysql_* 已弃用,因此请使用 pdomysqli

标签: php mysql loops


【解决方案1】:

可以解决

  $qry = mysql_query("SELECT * FROM noticias WHERE deletada='0' ORDER BY id ASC")

  while ($noticia = mysql_fetch_array($qry ))
    {
        // echo $noticia['blabla'];
    }

mysql_* 函数已弃用,因此请使用 pdo 或 mysqli

用pdo简单的here is very simple pdo tutorial

$pdo = new PDO('mysql:host=localhost;dbname=testdb;charset=UTF-8', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$query = $pdo->prepare("SELECT * FROM noticias WHERE deletada='0' ORDER BY id ASC");
$query->execute();
$row=$articlequery->fetch(pdo::FETCH_ASSOC);

【讨论】:

  • @SergioToledoPiza 如果此答案对您有帮助,您可以通过单击投票面板下方的right 标记来接受此答案
【解决方案2】:

试试这个。

$query = mysql_query("SELECT * FROM noticias WHERE deletada='0' ORDER BY id ASC");
while($noticia = mysql_fetch_array($query)){
    echo $noticia['table_field'];
}

【讨论】:

  • mysql_* 已弃用,因此不建议
猜你喜欢
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多