PHP和MySql检查表是否为空

use*_*593 4 php mysql if-statement

我有点像菜鸟 - 我很难过......

我需要一些代码来搜索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>';
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*osh 10

mysqli_fetch_array无论该行中的列是否为空,都将获取一行.您想检查是否$row['description']设置而不是if $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>';
}
Run Code Online (Sandbox Code Playgroud)

编辑:或者,作为替代方案,您无法从描述为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>';
}
Run Code Online (Sandbox Code Playgroud)

现在你要检查一下你是否能够抓住一排.

  • 如果`id`被标记为`PRIMARY`或`UNIQUE`索引,那么一旦找到唯一的行,MySQL现在就不会扫描整个表. (2认同)