PHP & MySql проверить, если таблица пуста - PullRequest
4 голосов
/ 31 января 2011

Я немного новичок, и мне трудно ...

Мне нужно немного кода, который просматривает таблицу БД, чтобы найти строку, соответствующую $ idпеременная.В этой таблице есть поле 'description', которое мне нужно взять.Если это ноль, мне нужно показать одно сообщение, если не другое.Вот код, который у меня есть (я знаю, что мне нужно добавить escape-строку 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>';
}

Ответы [ 4 ]

10 голосов
/ 31 января 2011

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 голос
/ 31 января 2011

Кстати, вы можете выполнить проверку из вашего запроса, используя 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 будет выводитьсяТаким образом, вы можете покончить с условием if PHP.

1 голос
/ 31 января 2011

!$row произойдет, только если запись не найдена.Если описание поля действительно null, вы должны проверить это следующим образом:

if(is_null($row['description'])){

, но я рекомендую вам проверить, является ли значение пустым (или 0 или ноль):

if(empty($row['description'])){
1 голос
/ 31 января 2011

Как насчет:

SELECT COUNT(*) FROM table WHERE `description` IS NOT NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...