Исеть ();не возвращает false и вставляет пустое поле в базу данных - PullRequest
1 голос
/ 03 декабря 2011

Я делаю один из туториалов php в сети, и все шло хорошо до момента вставки чего-либо в базу данных с isset в условных формах.Хорошо, давайте перейдем к коду:

Это вставка в функцию БД (она находится внутри functions.php)

function addCat($cName, $cDesc){
    $query = mysql_query("INSERT INTO categories (Title, Description) VALUES ('$cName','$cDesc')") or die (mysql_error());
}

Вот форма:

<form action="doAdd.php" method="post">
<table>
    <tr>
    <td><label for="CatName">Name</label></td>
    <td><input type="text" name="CatName" /></td>
    </tr>
    <tr>
    <td><label for="CatDesc">Description</label></td>
    <td><input type="text" name="CatDesc" /></td>
    </tr>
    <tr><td colspan="2"><input type="submit" value="submit" name="submit"/></td></tr>
</table>
</form>

ИВот действие формы (в doAdd.php):

<?php
include('includes/functions.php');

if(isset($_POST['submit'])) {
    if(isset($_POST['CatName'])){
        addCat($_POST['CatName'],$_POST['CatDesc']);
        header("Location: cats.php");
    } else {
        echo "please set a category name!";

    }
} else {
    header("Location: addCat.php");
}
?>

Итак, в форме есть то, что она вставляет пустые поля, делая пустые записи внутри базы данных.Как вы думаете, это проблема с isset?

Ответы [ 3 ]

8 голосов
/ 03 декабря 2011

Вы должны использовать empty() вместо isset() следующим образом:

if(! empty($_POST['CatName']))

empty проверка, если переменная установлена ​​и не пуста (то есть не '', а обвиоулсое другое значение, например 0, false и т. Д.).

2 голосов
/ 03 декабря 2011

isset просто проверяет наличие переменной. Если вы хотите проверить, не пусто ли это, вы должны использовать !empty.

0 голосов
/ 04 декабря 2011

isset() проверяет, имеет ли переменная значение, включающее (False, 0 или пустая строка), но не NULL.Возвращает TRUE, если var существует;В противном случае FALSE.

С другой стороны, функция empty() проверяет, содержит ли переменная пустое значение, пустую строку, 0, NULL или False.Возвращает FALSE, если var имеет непустое и ненулевое значение.

Надеюсь, это помогло!

...