我正在使用
$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>