вот переменная описания, которую я повторяю из таблицы:
$description = mysql_result($result,$i,"description");
иногда запись $ i'th пуста и не содержит в ней никаких данных / описания.
То, что я хочу сделать, это echo «Нет описания» для записей, которые пусты
if (isset($description)){ echo "No description available";} else{ echo $desctipion;}
Моя попытка не работает, хотя она повторяет эхо. Нет описания для каждой записи, даже те, которые не пусты.
Какой ответ?
isset($description)
будет истинным, потому что $ description все еще задано, хотя его значение «пусто». То, что вам нужно использовать, пуст .
if (empty($description)) { echo "No description available"; } else { echo $description; }
Смотря что ты имеешь в виду.
mysql_result возвращает FALSE
при сбое, что произойдет, если вы указали недействительный (строка, поле). Чтобы проверить это, вы хотите использовать оператор идентичности ===
, который проверяет как значение, так и тип. Оператор равенства ==
, функция empty()
и условная оценка оператора if проверяют значение, но не тип.
Это означает, что с использованием одного из этих методов нет разницы между различными значениями, которые все равны Boolean FALSE
, например, пустые строки, пустые массивы, строка '0'
и значение NULL
.
Поэтому, если вы хотите быть очень основательно, вы можете сделать что-то вроде следующего:
if ($description === FALSE) { throw new Exception("The row $i was out of range in query $query."); } else if ($description === NULL) { // assuming that the description field has a default value of NULL // * this one I'm not sure about.. the documentation for mysql_result claims // that it returns a string, so this may never happen. // It's left as an exercise for the reader. throw new Exception("Uninitialized value in result row $i of db query $query"); } else if ($description === '') { echo "No description available"; } else { echo $description; }
Поскольку empty()
возвращает true
при аналогичном наборе условий в равенство ( ==
) с FALSE
, это более строгое в вашей проверке типа было бы особенно важно в тех случаях, когда результатом может быть "0"
.
По-видимому, мне не разрешено размещать более одной гиперссылки, поэтому я не смог ссылаться на документацию для операторов сравнения (« http://php.net/manual/en/language.operators.comparison.php ») или пустую функцию (« http://php.net/empty »). К счастью, их безопасность относительно слаба. Mhuh Hah!
Используйте функцию mysql_affected_rows
:
$qtd = mysql_affected_rows($result);