我有点像菜鸟 - 我很难过......
我需要一些搜索db表的代码来查找与$ id变量匹配的行。我需要抓住该表“描述”中的字段。如果它为null,我需要显示一条消息,如果不是另一条消息。这是我的代码(我知道我需要添加mysqli转义字符串,只需从内存中快速执行此操作):
$query = "SELECT description FROM posts WHERE id = $id";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC) ;
if(!$row){
echo "<p>'No description'</p>";
} else {
echo '<p>' . $row['description'] . '</p>';
}
答案 0 :(得分:10)
mysqli_fetch_array
都将获取一行。您想检查是否设置了$row['description']
而不是设置了$row
:
$query = "SELECT description FROM posts WHERE id = $id";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
if(isset($row['description'])) {
echo "<p>No description</p>";
} else {
echo '<p>' . $row['description'] . '</p>';
}
编辑或者,作为替代方案,您可以不从描述为NULL的数据库中获取行:
$query = "SELECT description FROM posts WHERE id = $id AND description IS NOT NULL LIMIT 1";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
if(! $row) {
echo "<p>No description</p>";
} else {
echo '<p>' . $row['description'] . '</p>';
}
现在你要检查一下是否能够抓住一行。
答案 1 :(得分:1)
怎么样:
SELECT COUNT(*) FROM table WHERE `description` IS NOT NULL
答案 2 :(得分:1)
只有在找不到记录时才会出现!$row
。如果字段描述确实是null
,则必须以这种方式进行检查:
if(is_null($row['description'])){
但我建议您检查值是否为空(或0或null):
if(empty($row['description'])){
答案 3 :(得分:1)
顺便说一句,您可以使用COALESCE
$query = "SELECT COALESCE(description, 'No description') FROM posts WHERE id = $id";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC) ;
echo $row['description'];
这样,如果description
字段有值,则会显示,否则将输出No description
。这样,您就可以取消PHP的if
条件。