【问题标题】:Gathering information from MySQL using two or more queries to retrieve on set of data使用两个或多个查询从 MySQL 收集信息以检索数据集
【发布时间】:2014-03-13 22:15:20
【问题描述】:

我正在尝试从 mysql 中的表格中获取信息以显示一些流行的产品,到目前为止,我没有高兴地想出了以下代码:

$sql2 = "SELECT GROUP_CONCAT(session_id) AS session_group FROM counter WHERE unique_id = '$unique_id'";
$rs2 = mysql_query($sql2,$con);

while($row2 = mysql_fetch_array($rs2)) {
"<p>";
$session_group = str_replace(",",", ", $row2['session_group']);
"</p>";
}

echo $sql3 = "SELECT unique_id, product_name FROM counter WHERE session_id IN ( ".var_export($session_group, true)." )";
$rs3 = mysql_query($sql3,$con);

while($row3 = mysql_fetch_array($rs3)) {
echo "<p>";
echo $row3['product_name'] . "<br />";
echo $row3['unique_id'] . "<br />";
echo $row3['hit_count'] . "<br />";
echo "</p>";
}

第一个查询运行良好并显示所需的结果,但第二个查询根本不显示任何内容,尽管我确信那里有信息可以找到。

我整天都在寻找答案,并且已经在网站上寻求帮助,但还没有完全弄清楚如何让它发挥作用。任何帮助将不胜感激,我会在早上回来寻找回复。

非常感谢!

哥斯达黎加

【问题讨论】:

  • 你能显示 echo $sql3 的结果吗??
  • Here you go: SELECT unique_id, product_name FROM counter WHERE session_id IN ( 'upbnqxP57, upbnqxP57, upbnqxP57, upbnqxP57, upbnqxP57, upbnqxP57, upbnqxP57, upbnqxP57, aoCgRk635, aiEJuVH31, aiEJuVH31, aiEJuVH31, mHIwa0k20, mHIwa0k20 ')

标签: php mysql group-concat


【解决方案1】:

var_export($session_group, true) 是问题

你有:

SELECT unique_id, product_name FROM counter WHERE session_id IN ( 'upbnqxP57, upbnqxP57, upbnqxP57, upbnqxP57, upbnqxP57, upbnqxP57, upbnqxP57, upbnqxP57, aoCgRk635, aiEJuVH31, aiEJuVH31, aiEJuVH31, mHIwa0k20, mHIwa0k20' ) 

但你需要:

SELECT unique_id, product_name FROM counter WHERE session_id IN ( 'upbnqxP57', 'upbnqxP57', 'upbnqxP57', 'upbnqxP57', 'upbnqxP57', 'upbnqxP57', 'upbnqxP57', 'upbnqxP57', 'aoCgRk635', 'aiEJuVH31', 'aiEJuVH31', 'aiEJuVH31', 'mHIwa0k20', 'mHIwa0k20' ) 

'upbnqxP57, upbnqxP57' != 'upbnqxP57', 'upbnqxP57'

【讨论】:

  • 我希望它能够动态更新,因为它会针对不同的产品而变化,并且结果应该基于产品的受欢迎程度。还值得注意的是,我应该在该查询的末尾添加 ORDER BY hit_count DESC。
  • 每个“单词”都需要在 ' 之间。您需要从 var_export($session_group, true) 创建一个新字符串,或解析以添加 '
  • 我通过如下更改 str_replace() 使其工作: $session_group = str_replace(",","', '", $session_group_temp);感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2013-10-23
  • 2016-11-29
  • 1970-01-01
  • 2020-04-15
  • 2016-01-24
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多