Php 为什么两个单独的MySQL语句彼此重复?

Php 为什么两个单独的MySQL语句彼此重复?,php,mysql,Php,Mysql,我有一个require文件,用于显示随机产品。在主页上,它被使用了两次,一次在主内容部分,然后在侧边栏中 我遇到的问题是,第二个require不会覆盖第一个sql结果,而是会添加到它们中?我得到的第二组结果是第一组加上第二组 下面是我用来选择产品的第一段代码: 从prodsORDER BY RAND()LIMIT 10中选择id 然后,这将使用它们来填充行: 选择*,MIN(price)作为minPrice,MAX(price)作为maxPrice,COUNT(id)作为numMercha

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

我遇到的问题是,第二个require不会覆盖第一个sql结果,而是会添加到它们中?我得到的第二组结果是第一组加上第二组

下面是我用来选择产品的第一段代码:

prods
ORDER BY RAND()LIMIT 10中选择id

然后,这将使用它们来填充行:


选择*,MIN(price)作为minPrice,MAX(price)作为maxPrice,COUNT(id)作为numMerchants FROM
prods
WHERE-id IN(“.$sqlIn.”)GROUP BY name BY ORDER BY RAND()


我肯定我忽略了一些东西,但无法思考它是什么。

我相信
选择
应该没有
*
。另外,为什么在查询中也按
RAND()
排序

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


在第一个查询中,您执行的是按兰德排序()-这太慢了-您确实需要这样做吗?谷歌搜索其他解决方案,从表中随机选取行,而无需关闭服务器。

我认为
SELECT
应该没有
*
。另外,为什么在查询中也按
RAND()
排序

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


在第一个查询中,您执行的是按兰德排序()-这太慢了-您确实需要这样做吗?谷歌搜索其他解决方案,在不关闭服务器的情况下从表中随机选取行。

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

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

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

您将结果存储在哪个变量中?您是否运行SQL语句两次,从而加载变量两次?根据PHP,包括/要求文档:

()

当包含文件时,代码将显示该文件 包含继承变量范围 包含的行的名称 发生。任何变量在 调用文件中的那一行将是 在被调用的文件中,从 这一点向前看。然而,所有 中定义的函数和类 包含的文件具有全局范围

如果这是您的问题,您能否对变量进行If检查,以便只加载一次?i、 e

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

你的问题中没有足够的信息提供任何真正的帮助

您将结果存储在哪个变量中?您是否运行SQL语句两次,从而加载变量两次?根据PHP,包括/要求文档:

()

当包含文件时,代码将显示该文件 包含继承变量范围 包含的行的名称 发生。任何变量在 调用文件中的那一行将是 在被调用的文件中,从 这一点向前看。然而,所有 中定义的函数和类 包含的文件具有全局范围

如果这是您的问题,您能否对变量进行If检查,以便只加载一次?i、 e

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

我怀疑问题在于它嵌入PHP的方式,而不是SQL本身。我怀疑问题在于它嵌入PHP的方式,而不是SQL本身。我继承了代码,因此正在逐步进行更改,我将检查rand()替代方案。如果没有*的话,select将无法工作。我继承了代码,因此我将逐步进行更改,我将检查rand()替代方案。如果每次都没有将*its分配给$sql,select将无法工作,因为它将重用require文件。第二次使用$sql时,应该重新定义它。您能在问题中添加一个php摘录吗?根据数据集/数组结构/序列,变量可能会被添加到数据集中,而不是被覆盖。在将变量用于第二条语句之前,您可以运行unset($sql)来纠正问题,因为只需查看变量,就可以发现$sqlin不会重新定义自身。所以SQL很好,但是WHERE IN()语句被附加到了。因此,您是否碰巧拥有一个水晶球?你怎么猜到的?!?:)每次都将其分配给$sql,因为它需要重用require文件。第二次使用$sql时,应该重新定义它。您能在问题中添加一个php摘录吗?根据数据集/数组结构/序列,变量可能会被添加到数据集中,而不是被覆盖。在将变量用于第二条语句之前,您可以运行unset($sql)来纠正问题,因为只需查看变量,就可以发现$sqlin不会重新定义自身。所以SQL很好,但是WHERE IN()语句被附加到了。因此,您是否碰巧拥有一个水晶球?你怎么猜到的?!?:)