2014-09-26 73 views
0

我是PHP的新手。我有這個添加pultiple數組到MySQL數據庫的輸入。PHP使用empty()函數檢查數組

​​

現在,我需要檢查是否有空值發送到數據庫。

我檢查empty()函數,但這不適用於name="image_url[]"

HTML:

<input name="image_url[]" id="upload" type="text" value=""> 

PHP代碼:

if(empty($_POST['image_url'])){ 

echo 'true'; 

} else { 

echo 'false'; 

} 

但我總是看到輸出:真實。在默認情況下,我的輸入是空白/空的。

我檢查並從輸入名稱(name =「image_url」)中刪除[],我看到true輸出。

我想我的問題是輸入數組名稱。

如何解決這個問題並檢查空值?

中的var_dump($ _ POST)我看到這樣的輸出:

["image_url"]=> 
    array(1) { 
    [0]=> 
    string(0) "" 
    } 

現場演示http://madenade.besaba.com/php/?action=editnews&id=10

注意:您在演示空值,而不是空值!你看輸出:false

+1

嘗試isset($ _ POST ['image_url'])看是否設置了值並且不爲空 – 2014-09-26 06:39:49

+0

閱讀有關什麼被認爲是空的手冊 – 2014-09-26 06:40:02

回答

1

你正在輸入名稱中使用[]創建一個值的數組。如果您只需要一個值,而不是更多,則請刪除輸入名稱中的[],否則您將在$_POST['image_url']中獲得一個數組。

<input name="image_url" id="upload" type="text" value=""> 
if (empty($_POST['image_url'])) { 
    echo 'true'; 
} else { 
    echo 'false'; 
} 

否則,如果您需要值的數組,然後保持[]輸入名字的意思是$_POST['image_url']將包含值的數組,而不是一個單一的值。你可能想要檢查它們中的每一個。

<input name="image_url[]" id="upload" type="text" value=""> 
foreach ($_POST['image_url'] as $image_url) { 
    if (empty($image_url)) { 
     echo 'true'; 
    } else { 
     echo 'false'; 
    } 
} 
+0

當我們有一個輸入框並且此代碼檢查一個輸入框有值發送並將所有輸入框(空值+非空值)插入數據庫。我只需要將非空值插入到我的數據庫中。 '我只需要發送'123'和'456'值給數據庫。 – 2014-09-26 06:56:31

+0

@EricFavoni,好吧,你只能在'if'分支中保存你需要的值,並刪除你在else分支中不需要的東西。 – rid 2014-09-26 07:01:26

+0

請參閱我的新編輯。 – 2014-09-26 07:28:18

0

首先使用HTML這樣的(如果烏拉圭回合進入單個值)

<input name="image_url" id="upload" type="text" value=""> 

然後在PHP代碼檢查像這樣

if(isset($_POST['image_url']) && $_POST['image_url'] != ""){ 

echo 'true'; 

} else { 

echo 'false'; 

} 

這會給你所需輸出

+0

爲什麼'!=「」'而不是'empty()'? – Xatenev 2014-09-26 07:54:09