【问题标题】:PHP: foreach loopPHP:foreach 循环
【发布时间】:2016-03-10 17:22:47
【问题描述】:

我正在尝试构建一个 PHP 函数来检查某些 URL 是否仍在工作或已过期。

如果有人可以帮助我创建循环功能,那就太好了(“定义 URL”应该循环遍历列表,“输出”应该将回显写回表中)。

这里是 php

$sql = "SELECT link FROM link_check";
$url = $conn->query($sql);

foreach ($sql as $url);
{
$check_url_status = check_url($url);
if ($check_url_status == '200')
   echo "Link Works";
else
   echo "Broken Link";
}
    ?>

这个问题与这个旧帖子有关:Check Link URL

【问题讨论】:

  • SO 是一个问答网站,所以如果问一个具体的问题而不仅仅是列出您需要帮助的内容会很好。此外,您可以与我们分享您的尝试。
  • 您需要将 if/else 语句放在您的 while 循环中,遍历数据库结果,然后根据这些条件执行您的 UPDATE 查询。此外,您在//Define URLs 下的第二个查询是不必要的,并且您也错误地使用了结果。 $url 是整个 mysql 结果。
  • 您需要的一切都在文档中的示例中:php.net/manual/en/mysqli-stmt.fetch.php(如果您使用 PDO,则为 php.net/manual/en/pdostatement.fetch.php
  • 我投票结束这个问题作为题外话,因为它只是要求一个使用未公开的数据库库的示例,该库可能可以在相应的手册中找到,因此不太可能帮助其他人。

标签: php mysql


【解决方案1】:

您必须遍历检索到的记录集(查询结果):

   $SQL = "SELECT link FROM link_check";

   $rst = $conn->query($SQL);

   while($row = $rst->fetch_assoc())
   {
     $check_url_status = check_url($row['link']);
     echo ($check_url_status == '200') ? "Link Works" : "Broken Link";
   }

【讨论】:

  • 非常感谢。正是我需要的。知道如何将数据写回到数据库表中,让我们说“URL_status”列?
  • 为什么是while()fetch_assoc() 而不是任何其他机制?我们对 OP 使用的库一无所知。
  • 很明显,OP 是 PHP 编程的初学者,所以这是想要的并且可能是最简单的解决方案。数据库更新的解决方案是动态创建 UPDATE SQL (UPDATE link_check SET URL_status='OK' WHERE link='$link') 并为每一行执行此查询(每行都通过循环)。再次有人会建议使用准备好的语句(我也会在其他情况下,但不是现在)。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-27
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多