根据 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/