gpt4 book ai didi

php - MYSQL:列出其值 = "Yes"的所有列名

转载 作者:行者123 更新时间:2023-11-29 07:23:19 28 4
gpt4 key购买 nike

我有一个这样的表:

User_Id    Column1    Column2    Column3
1 Yes No Yes
2

我想使用 mysql 查询列出所有与 User_Id '1' 匹配且值为 'Yes' 的列名(超过 3 个)。

我得到一个错误:

Trying to get property 'num_rows' of non-object 

这是我尝试过的:

<?php $myStats = $mysqli->query("SELECT COLUMN_NAME FROM user_services.columns WHERE myColumn = 'Yes'");
if ($myStats->num_rows > 0) {
// output data of each row
while($row = $myStats->fetch_assoc()) {
$rows[] = $row; }

return $rows; ?>

有人可以告诉我哪里出错了吗?提前致谢。

最佳答案

CONCAT_WS 函数在这里派上用场:

SELECT CONCAT_WS(',', IF(Column1='Yes', 'Column1', NULL),
IF(Column2='Yes', 'Column2', NULL),
IF(Column3='Yes', 'Column3', NULL)) AS columns
FROM user_services.columns
WHERE User_Id = 1;

如果你有超过 3 列,那么你可以在上面的 CONCAT_WS 调用中添加更多的术语。您的问题似乎主要是 SQL 问题,所以我不会添加任何 PHP 代码。

请注意,如果您的列字符串分布在行而不是列中,您的设计可能会更好。例如,考虑以下替代方案:

User_Id | number | val
1 | 1 | Yes
1 | 2 | No
1 | 3 | Yes

然后,如果您想要用户 1 的所有列号都是肯定的,您可以简单地执行以下操作:

SELECT
User_Id,
GROUP_CONCAT(number ORDER BY number) columns
FROM yourTable
WHERE
User_Id = 1
GROUP BY
User_Id;

关于php - MYSQL:列出其值 = "Yes"的所有列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55087457/

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