我想从列名为非空的表中检索数据。当我使用IS NOT NULL时,它选择所有行。请检查我的代码。
my table is
------------------------------------------------------
i_am pname name
------------------------------------------------------
cardiologist dbkr
orthopedician mdv
apollo mbkr
pateint charan
现在我想从pname不为空的表中检索数据,并在选择框中显示该列表。所以我正在编写以下代码
<select name="pharmacy" id="pharmacy">
<?php
$sqlPh = "SELECT * FROM users WHERE pname IS NOT NULL";
$mysqlPh = mysqli_query($con,$sqlPh);
//die(mysqli_num_rows($mysqlPh));
while($phData = mysqli_fetch_object($mysqlPh))
{
?>
<option value="<?php echo $phData->pname;?>"><?php echo $phData->pname;?></option>
<?php
}
?>
</select>
我期待的是
<select>
<option value="apollo">apollo</option>
</select>
但它给出的是
<select>
<option></option>
<option></option>
<option value="apollo">apollo</option>
<option></option>
</select>
它也给出了空值。如何只得到空值?
答案 0 :(得分:2)
我的猜测是,那些在pname
列中显示空值的记录实际上没有NULL
,而是有空格。如果是这样,您可以使用以下查询解决此问题:
SELECT *
FROM users
WHERE COALESCE(TRIM(pname), '') <> '';
答案 1 :(得分:1)
某些列可能有空白空间而其他列有空白 试试这个
SELECT * FROM `users` WHERE `pname` != ''
这只会获得具有一些数据的值
上面的会产生你想要的东西,但更准确地使用下面的查询
SELECT * FROM `users` WHERE `pname` IS NOT NULL AND `pname` != ''
这里你得到的数据不是空的而不是空的
答案 2 :(得分:0)
试试这个:
SELECT *
FROM users
WHERE TRIM(pname) <> '';