【问题标题】:PHP/MySQL join with CSV arrayPHP/MySQL 加入 CSV 数组
【发布时间】:2014-02-24 13:50:42
【问题描述】:

关于从 2 个不同的表中获取信息,我有一个棘手的问题(对我来说很好)。

我有一个数组,像这样:

$abc=$_COOKIE['cookie'];
$comma_separated = implode(",", $abc);

现在,该数组将是一个 CSV 列表,其中包含需要与“特价商品”表中的 ID 匹配的 ID。在“特价商品”表中有一个名为合同名称的列。此 Contract Name 列需要匹配 Products 表中的同名列,每个列都是唯一的,并显示其中包含的信息。

我当前的 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 教程,但没有运气。

据我所知,我不擅长正确解释事情,所以如果我能进一步阐明这个难题,请大声疾呼。

谢谢! :)

【问题讨论】:

  • 不应该是 `products.package` 或者(更好的)products.package。并尝试添加这一行... echo $query;
  • productFROM specials, product 中缺少“s”
  • 另外,我很失望那些 JOIN 教程都没有提到包含“JOIN”这个词:-(
  • 假设这不是 php 问题,请尝试发布 php 输出的查询以及您的数据库架构,以便我们可以构建一个有效的 sqlfiddle 供您和我们测试。

标签: php mysql sql arrays csv


【解决方案1】:

要开始让它工作,你的$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 列,然后您的搜索子句将是模棱两可的。

【讨论】:

    猜你喜欢
    • 2015-01-19
    • 1970-01-01
    • 2012-07-06
    • 2012-07-11
    • 1970-01-01
    • 2015-09-05
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多