gpt4 book ai didi

php - mysql查询不选择空列

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:07 26 4
gpt4 key购买 nike

我正在使用

获取一些结果
$result=mysql_query("SELECT * FROM mobiles");

这个 mobiles 表有 9 列

id,name,imei1,imei2,imei3,imei4,imei5,qty,price

一些 imei 字段将为空,我不想在查询中选择这些字段,因为在每一行中,NULL、NOT NULL 都在变化。

我需要询问是否有任何查询将只选择非空/空的列。

正常方式,mysql_num_fields() 返回值 9,如果 imei4 和 imei5 为空,它应该返回值 7..等等

我也可以将它硬编码为 WHERE imei1 IS NOT NULL 但我希望它是生成的而不是硬编码的。

我寻找这种查询的原因是,

<select class="form-sell" name="imei">
<?php if(!empty($row['imei1'])){?><option value="<?php echo $row['imei1']; ?>"><?php echo $row['imei1']; ?></option><?php } ?>
<?php if(!empty($row['imei2'])){?><option value="<?php echo $row['imei2']; ?>"><?php echo $row['imei2']; ?></option><?php } ?>
<?php if(!empty($row['imei3'])){?><option value="<?php echo $row['imei3']; ?>"><?php echo $row['imei3']; ?></option><?php } ?>
<?php if(!empty($row['imei4'])){?><option value="<?php echo $row['imei4']; ?>"><?php echo $row['imei4']; ?></option><?php } ?>
<?php if(!empty($row['imei5'])){?><option value="<?php echo $row['imei5']; ?>"><?php echo $row['imei5']; ?></option><?php } ?>
</select>

我知道这不是获取硬编码值的便捷方法,但是一旦我能够获取 mysql_num_fields 值并从该值中减去 4,我就会让它们进入循环,例如

$value = mysql_num_fields($result)
$numColums = $value-4;
// Now as from my table, 3 is left from row1 and 2 is left from row2, I can use a for loop to get the select options.

回答

<?php
$result=mysql_query("SELECT * FROM mobiles");
$columnCount = mysql_num_fields($result)-4; // subtracted static column numbers (id,name,qty,price)
?>
<select class="form-sell" name="imei">
<?php
// while numebr of imei fields run
for($i=1;$i<=$columnCount;$i++){
$imei = "imei" . $i;
if(!empty($row[$imei])){
?>
<option value="<?php echo $row[$imei]; ?>"><?php echo $row[$imei]; ?></option>
<?php
}//if
}//for
//if at some point user adds more imei colums as 6 7 8 9 and so on, 4 colums will
//always be subtracted giving remaining imei colums only and displaying them in loop
?>
</select>

最佳答案

我唯一能想到的就是使用这样的查询:

SELECT
id, name,
CONCAT_WS(',', imei1, imei2, imei3, imei4, imei5) as imei,
qty, price
FROM
mobiles

CONCAT_WS 将创建一个字符串,其中所有 imei 以逗号分隔,跳过空值。

关于php - mysql查询不选择空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16286578/

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