我有一个用于显示随机产品的require文件。在主页上,它会被使用两次,一次在主内容部分,然后再在侧边栏中。
我遇到的问题是第二个要求不会覆盖第一个sql结果,它会添加到它们?我实际得到的第二组结果是第一组加第二组。
以下是我用来选择产品的第一部分代码:
SELECT id FROM
prods
ORDER BY RAND() LIMIT 10
然后用这些来填写行:
prods
我确信我忽略了某些东西,却无法想象它是什么。
答案 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