2012-02-09 85 views
0

我想知道如何檢查特定用戶的字段(列)是否爲空。如何檢查mySQL數據庫中的某個字段是否爲空PHP

我已成功連接到mySQL數據庫,我輸入了一個用戶,我有空的字段。我有一個帖子表單,允許用戶輸入信息。根據其他領域是否爲空,我希望他們相應填寫。我想用邏輯來確定一個字段是否爲空。我使用了以下內容:?

if($_SERVER['REQUEST_METHOD'] == 'POST') { 

    if(trim($_POST['listing_link']) == '') { 
    } 
    else if(empty($listing_link1)) { 


     $listing_link1 = $_POST['listing_link']; 

     $listing_link1 = mysql_real_escape_string($_POST['listing_link']); 

     $query = "UPDATE `users` 
       SET `listing_link1`='$listing_link1' 
       WHERE `email`='$emailstring'"; 
    } 
    else if(!empty($listing_link1) && empty($listing_link2)) { 
     $listing_link2 = $_POST['listing_link']; 

     $listing_link2 = mysql_real_escape_string($_POST['listing_link']); 

     $query = "UPDATE `users` 
     SET `listing_link2`='$listing_link2' 
     WHERE `email`='$emailstring'"; 
    } 
    else if(!empty($listing_link2) && empty($listing_link3)) { 
     $listing_link3 = $_POST['listing_link']; 

     $listing_link3 = mysql_real_escape_string($_POST['listing_link']); 

     $query = "UPDATE `users` 
     SET `listing_link3`='$listing_link3' 
     WHERE `email`='$emailstring'"; 

    } 

    else if(!empty($listing_link3) && empty($listing_link4)) { 
     $listing_link4 = $_POST['listing_link']; 

     $listing_link4 = mysql_real_escape_string($_POST['listing_link']); 

     $query = "UPDATE `users` 
     SET `listing_link4`='$listing_link4' 
     WHERE `email`='$emailstring'"; 

    } 

    else if(!empty($listing_link4) && empty($listing_link5)) { 
     $listing_link5 = $_POST['listing_link']; 

     $listing_link5 = mysql_real_escape_string($_POST['listing_link']); 

     $query = "UPDATE `users` 
     SET `listing_link5`='$listing_link5' 
     WHERE `email`='$emailstring'"; 

    } 

    $result = mysql_query($query); 


} 

>

此代碼檢查是否存在由用戶輸入時,擊中了「listing_link」按鈕什麼。如果沒有,那麼沒有任何反應。如果輸入內容,則會檢查以確定是否填充了其他字段(listing_link1,listing_link2 ... listing_link5)。 $ listing_link1 - 5變量應該用於提供信息。

我不能得到其他別的IFS除了運行:

else if(empty($listing_link1)) { 

      $listing_link1 = $_POST['listing_link']; 

      $listing_link1 = mysql_real_escape_string($_POST['listing_link']); 

      $query = "UPDATE `users` 
        SET `listing_link1`='$listing_link1' 
        WHERE `email`='$emailstring'"; 

,而後通過點擊窗體的按鈕連續運行的代碼只是替換listing_link1變量與新輸入的信息。

也許這裏寫的邏輯有問題。如果可以的話請幫忙。

+0

你的代碼似乎不正確。你有5個鏈接。如果有人刪除,發送link3爲空。你是否將該用戶的數據庫link3值更新爲空,或者您是否忽略該值?回答你的問題取決於那個。 – 2012-02-09 02:14:49

+0

貨物崇拜編程?將帖子值複製到變量中,然後用轉義值的轉義版本覆蓋完全相同的值? – 2012-02-09 02:58:53

+0

是的,這是有缺陷的,我意識到這一點,這就是爲什麼我要求幫助。我希望能夠測試一個字段是否爲空以確定是否用另一個鏈接填充另一個字段... – 2012-02-09 03:46:07

回答

0

你沒有定義$listing_link1你檢查後,直到看它是否是空的:

else if(empty($listing_link1)) 
{ 
     $listing_link1 = $_POST['listing_link']; 

翻轉「時間各地:

$listing_link1 = $_POST['listing_link']; 
if(empty($listing_link1)) 
{ 
0

如果我給你的權利,這將解決你的悲哀:

$empty = 0; 
for($i=1; $i<=5; $i++){ 
    $varname = "listinglink$i"; 
    if(empty($$varname)){ 
    $empty = $i; 
    break; 
    } 
} 

if($empty > 0){ 
    $update_field = "listinglink{$empty}"; 
    $update_data = $_POST['listing_link']; 
    mysql_query("UPDATE users SET `$update_field`='$update_data' 
       WHERE email='$emailstring'"); 
} 

我在那裏做的是旋轉一個循環來檢查哪一個是第一個空* listing_li nk *,只要我找到它,將一些變量設置爲它的編號並退出循環。從那裏它非常簡單。

這樣做什麼:$$varname = 1;是,它需要$ varname的價值,並試圖使用它作爲一個變量名,例如:

$test = "groovy."; 
$varname = "test"; 
echo $$varname; // eqivalent to "echo $test" 

樂趣技術:)

+0

嘿adioe,這個解決方案不會填充除第一個(first_link1)之外的任何其他字段。當我給表單輸入新內容時,它只會替換第一個字段。其他領域都沒有改變。 – 2012-02-09 05:24:04

+0

請繼續提供幫助。 – 2012-02-10 03:44:47

相關問題