isset()函数;不返回false并将空白字段插入数据库

时间:2011-12-03 18:39:51

标签: php mysql if-statement isset

我正在网上做一个php教程,直到用形式条件中的isset插入数据库的时刻才可以。好吧,让我们来看看代码:

这是插入DB函数(它在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 个答案:

答案 0 :(得分:8)

您应该以这种方式使用empty()而不是isset()

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

empty测试var是否设置且不为空(即不是''并且显示其他值,如0,false等)。

答案 1 :(得分:2)

isset只是检查变量是否存在。如果您想测试它是否为空白,则应使用!empty代替。

答案 2 :(得分:0)

isset()检查变量是否包含值(False,0或Empty string),但不包括NULL。如果var存在则返回TRUE;否则就错了。

另一方面,empty()函数检查变量是否为空值空字符串,0,NULL或False。如果var具有非空和非零值,则返回FALSE。

希望这有帮助!