2011-12-03 79 views
1

我正在做一個在網絡中的PHP教程,並且直到將表達式條件中的isset插入到數據庫的時刻才行。好吧,讓我們的代碼:isset();不會返回false並將空白字段插入到數據庫中

這是插入到數據庫的功能(這裏面的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的問題是什麼?

回答

8

你應該以這種方式使用empty()代替isset()

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

empty測試,如果變量被設置,而不是空的(即不是''和obvioulsy其他值如0,虛假等)。

+0

不只是'''':http://php.net/manual/en/function.empty.php –

+0

感謝您的回答。如果(var)有條件使用,那麼它可以使用簡單嗎?因爲它似乎可以這樣工作? – Malyo

+0

@EtiennedeMartel在非完全相同的模式下,它與0,FALSE等相同。 –

2

isset只是檢查是否存在變量。如果你想測試它是否不是空白,你應該使用!empty

0

isset()檢查變量的值是否包含(False,0或空字符串),而不是NULL。如果var存在,則返回TRUE;否則,返回FALSE。

另一方面,empty()函數檢查變量是否有空值空字符串,0,NULL或False。如果var具有非空值和非零值,則返回FALSE。

希望這有助於!