2013-02-05 17 views
0

找到這個答案helpful,但是我有大約100個需要更新的輸入。防止MySQL使用空字符串更新列?

我現在有清理的值驗證碼:

foreach($_POST as $key => $value) { 
$data[$key] = filter($value);} 

我可以從上面的鏈接添加這個問題的答案代碼,影響所有100個輸入或我將被迫上添加IF子句每個輸入。

謝謝。

回答

1
$update_arr = array(); 
foreach ($_POST as $key => $value) 
{ 
    if (strlen($value) !== 0) 
    { 
     $update_arr[] = $key.' = "'.filter($value).'"'; 
    } 
} 
$update_string = implode(',',$update_arr); 
$table = ''; 
$where = ''; 

$format = "UPDATE %s SET %s WHERE %s"; 
$sql = sprintf($format,$table,$update_string,$where); 
+0

我更新爲以下:<?PHP 如果($ _ POST [ '提交'] == '提交') { $ update_arr =陣列(); foreach($ _POST as $ key => $ value) { if(strlen($ value)!== 0) { $ update_arr [] = $ key。' =「'.filter($ value)。'」'; } } $ update_string = implode(',',$ update_arr); $ table =''; $ where =''; $ format =「UPDATE%s SET%s WHERE%s」; $ sql = sprintf($ format,$ table,$ update_string,$ where); 的mysql_query(」 \t UPDATE'labor' \t \t \t \t SET \t \t \t \t labor_status = '$數據[labor_status]', \t \t \t \t labor_type = IF(LENGTH( '$數據[labor_type]')= 0,labor_type,} ...等等,沒有任何數據輸入 – user1949953

+0

沒有工作,還沒有得到答覆... – user1949953

+0

檢查看看生成的查詢是什麼如果SQL語法是正確的,那麼你有一個數據庫連接錯誤,或者你有執行命令的實際代碼的問題。 – Ethan