为什么两个单独的MySQL语句相互重复?

时间:2010-10-27 13:57:08

标签: php mysql

我有一个用于显示随机产品的require文件。在主页上,它会被使用两次,一次在主内容部分,然后再在侧边栏中。

我遇到的问题是第二个要求不会覆盖第一个sql结果,它会添加到它们?我实际得到的第二组结果是第一组加第二组。

以下是我用来选择产品的第一部分代码:

SELECT id FROM prods ORDER BY RAND() LIMIT 10

然后用这些来填写行:

prods

我确信我忽略了某些东西,却无法想象它是什么。

3 个答案:

答案 0 :(得分:0)

我相信SELECT应该没有*。另外,为什么还要在查询中按RAND()进行排序。

SELECT MIN( price ) AS minPrice, MAX( price ) AS maxPrice, COUNT( id ) AS numMerchants FROM prods 
WHERE id IN ('.$sqlIn.') GROUP BY name

在第一个查询中,您正在执行ORDER BY RAND() - 这非常慢 - 您是否绝对需要这样做? Google提供了从桌面中挑选随机行而无需关闭服务器的其他解决方案。

答案 1 :(得分:0)

您是否将两个查询/结果分配给同一个变量?如果是这种情况,生成的PHP数组将附加任何新结果。尝试分配不同的变量,或使用unset($ results)。

答案 2 :(得分:0)

您的问题中没有足够的信息可以提供任何真正的帮助。

您将结果存储在哪个变量中?您是否运行两次SQL语句并因此加载变量两次?根据PHP include / require文档:

http://php.net/manual/en/function.include.php

  

当包含文件时,代码就是它   包含继承变量范围   包含的行   发生。任何可用的变量   调用文件中的那一行将是   在被调用文件中可用,来自   那一点。但是,所有   中定义的函数和类   包含文件具有全局范围。

如果这是您的问题,您可以对变量进行IF检查,以便只加载一次吗?即。

if (isset($myResults))
{
  load
}
// else do nothing because already loaded in the first require