gpt4 book ai didi

php - 在 PHP 脚本中,MySQL 查询返回 NULL 列

转载 作者:行者123 更新时间:2023-11-29 02:29:58 24 4
gpt4 key购买 nike

我有这个 sql 查询:

SELECT * 
FROM products p, products_description pd, products_to_categories c left
join products_sex ps on (c.products_id = ps.products_id),
categories cc
WHERE p.products_id = pd.products_id
and p.products_id = c.products_id
and cc.categories_id = c.categories_id
and p.products_status = 1
and p.products_price >= 15.8333333333
and p.products_price <= 40
and p.products_quantity > 0
and (ps.products_sex = "U" or ps.products_sex is null)
and (c.categories_id = 77 or cc.parent_id = 77)
ORDER BY products_sort_order, p.products_date_added desc, pd.products_name ASC
LIMIT 0, 40

如果我在 MySQL 客户端(命令行或 Navicat)执行它,我得到这个结果:

products_id  |  dodavatelia_id  ...
2153 | 67 ...

但是如果我通过 PHP 脚本(使用 mysql_query 和 mysql_fetch_assoc)获取产品,我会得到:

array ( 
'products_id' => NULL,
'dodavatelia_id' => '67',
...
);

为什么我的 products_id 为 NULL?

最佳答案

这可能是因为您正在连接包含同名列的多个表,此处为 products_id,因此您检索具有该名称的最后一列的值可能是 NULL.

您应该为要检索的列设置一个别名:

SELECT p.products_id AS pPropId, p.* FROM products p, ...

然后在您的 PHP 结果中,您可以像这样访问您的列:

$result['pPropId']

有关 SQL 别名功能的更多信息 here .

编辑:为什么它在命令行而不是在这里工作?

SQL 查询工作正常,将返回名称 products_id每个 列。问题是您使用 mysql_fetch_assoc() 返回一个基于结果的关联数组。并且数组中的同一个键不能有多个值。

所以它可能在内部做的是设置 $result['products_id'] = p.products_id 但随后它对具有相同名称的下一列执行相同的操作,删除先前的值。你可以使用 mysql_fetch_row()没有这个问题。

一个好的做法是在 SELECT 中列出您真正想要检索的列,而不仅仅是 SELECT *。那么具有相同名称的两个列需要不同的别名就变得合乎逻辑了。

关于php - 在 PHP 脚本中,MySQL 查询返回 NULL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14786742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com