php - 双 While 循环不起作用

标签 php mysql

根据 StackOverflow 上给我的建议,我尝试了下面的查询,但没有成功。我试图获取数据库中最近添加的 25 个“site”值的列表,无论它们位于哪个表中。下面的代码给出以下错误:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in domain.php on line 82

第 82 行有 while ($rowa = mysql_fetch_array($indexa))

有什么想法为什么它不起作用吗?

echo "<table class=\"samples\">";
$index = mysql_query("select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='sitefeather'");
while ($row = mysql_fetch_array($index))
{
    $indexa = mysql_query("select site FROM index order by createdatetime desc limit 25");
    while ($rowa = mysql_fetch_array($indexa))
    {    
        echo '<tr><td><a href="sitelookup3.php?entry='.urlencode($rowa['site']).'&searching=yes&search=search">'.$rowa['site'].'</a></td></tr>';
    }    
}
echo "</table>";

最佳答案

您可能需要一个变量来代替 index。也许是这个?

$indexa = mysql_query("select site FROM {$row['TABLE_NAME']} order by createdatetime desc limit 25");

但是,嗯...你在做什么?我不知道你到底想要完成什么,但我的脑海里响起了非常响亮的警钟。在查询中使用动态表名是一个主要的危险信号,也是数据库设计不佳的标志。

My database has a variable number of tables, all with the same structure.

这很糟糕。

这些表里有什么?让我们帮助您将所有这些数据放入一张表中。

最直接的方法是创建一个表,其中包含一个额外的列,其中包含当前存储每行的表的名称。不要使用表“foo”、“bar”和“baz”,而是创建一个表,其中一列包含“foo”、“bar”或“baz”作为字符串值。

关于php - 双 While 循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1653566/

相关文章:

PHP 命名空间和构造函数问题

使用汇总数据查询一组类对象的 PHP 最佳实践

php - PHP 中的 REST 与 RPC

sql - 如何比较一行中的重叠值?

mysql按多列排序,包括标志

mysql - XAMPP 和 WebMatrix

php - Doctrine 1.2 - 如何连接 2 个数据库

php - 是否有可用于验证码的免费 PHP 库

MySQL INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 增量

php - 如何安装供所有用户全局使用的 Python 包(包括 www-data)