我有一个棘手的问题(对我来说确实如此),关于从两个不同的表获取信息。
我有一个数组,如下所示:
$abc=$_COOKIE['cookie'];
$comma_separated = implode(",", $abc);
现在,该数组将是一个 CSV 列表,其中包含需要与“Specials”表中的 ID 进行匹配的 ID。在“特价”表中有一列称为“契约(Contract)名称”。此“契约(Contract)名称”列需要与“产品”表中的同名列(每个列都是唯一的)匹配,并显示其中包含的信息。
我当前的 MySQL 查询如下所示:
$query= "SELECT specials.id,
specials.product_name,
specials.contract_name,
specials.included_value AS inc_val,
specials.image_url,
specials.contract_monthly,
specials.outlet,
products.package,
products.bundled,
products.included_value
FROM specials,
product
WHERE `id` IN ('.$comma_separated.')
AND specials.contract_name = `products.package`";
发生的事情是……什么也没有发生。我尝试过思考一些 JOIN 教程,但没有成功。
所以基本上我想显示当前特价的列表以及包含在不同表格中的套餐信息。我尝试过思考一些 JOIN 教程,但没有成功。
据我所知,我不擅长正确解释事情,所以如果我能进一步阐明这个难题,请大声喊叫。
谢谢! :)
最佳答案
要开始让它工作,您的 $query
字符串必须是有效的查询。通常,要解决此类问题,您可以在途中的某个地方 echo $query;
来查看它是否有效。然后,您甚至可以将查询的文本粘贴到独立的 MySQL 客户端(phpMyAdmin,或者可能是 HeidiSQL 等)中以查看您得到的结果。
看这一行:
WHERE `id` IN ('.$comma_separated.') /* wrong! */
看起来需要阅读
WHERE `id` IN (".$comma_separated.")
因为您使用双引号将 SQL 文本片段括起来。另外,您可能想使用
WHERE `specials`.`id` IN (".$comma_separated.")
只是因为其他一些表可能包含 id
列,然后您的搜索子句将不明确。
关于PHP/MySQL 与 CSV 数组连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21989726/