2016-12-01 250 views
0

檢查是否有任何輸入值?如果輸入的值爲null/empty,請不要將它們更新爲DB?檢查是否有任何輸入值

這是我的代碼,當我有空的輸入時,我在數據庫中丟失了以前的數據。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

$mysql_host = "localhost"; 
$mysql_username = "root"; 
$mysql_password = ""; 
$mysql_database = "medvedgrad"; 

// First we create the connection 
$pdo = new PDO("mysql:host=".$mysql_host .";dbname=".$mysql_database .";charset=utf8", $mysql_username, $mysql_password); 
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$data = json_decode(file_get_contents("php://input")); 
$zm = $data->zlatni_medvjed; 
$ck = $data->crna_kraljica; 
$gv = $data->gricka_vjestica; 
$dk = $data->dva_klasa; 
$fk = $data->fakin; 



// Then we prepare, and execute the query 
$stmt = $pdo->prepare("UPDATE `stanje_piva` 
SET 
`zlatni_medvjed`=`zlatni_medvjed`+:zm, `crna_kraljica`=`crna_kraljica`+:ck, `gricka_vjestica`=`gricka_vjestica`+:gv, `dva_klasa`=`dva_klasa`+:dk,`fakin`=`fakin`+:fk WHERE `id`=1"); 

$stmt->execute(array("zm" => $zm, "ck" => $ck, "gv" => $gv, "dk" => $dk, "fk" => $fk)); 

?> 
+1

你試過['空()'](http://php.net/manual/en/function.empty.php)命令? –

+0

1.爲什麼在佔位符前有'+'符號,2.數組格式應該是'array(placeholder,value)'這裏'array(:zm => $ zm)'not'array(「zm」=> $ ZM)'。請檢查這些。 –

+0

昨天你問了這個問題,它在這裏得到了回答:http://stackoverflow.com/questions/40888924/update-table-set-only-column-wich-have-input?noredirect=1#comment69016187_40888924 –

回答

1
<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

$mysql_host = "localhost"; 
$mysql_username = "root"; 
$mysql_password = ""; 
$mysql_database = "medvedgrad"; 

// First we create the connection 
$pdo = new PDO("mysql:host=".$mysql_host .";dbname=".$mysql_database .";charset=utf8", $mysql_username, $mysql_password); 
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$data = json_decode(file_get_contents("php://input")); 

$zm = $data->zlatni_medvjed; 
$ck = $data->crna_kraljica; 
$gv = $data->gricka_vjestica; 
$dk = $data->dva_klasa; 
$fk = $data->fakin; 

//Let's do like Jack the ripper, lets divide into parts :p 

$updateparts = array(); 

$zm = trim($zm); 
if($zm != "") 
{ 
    $zmpart = "`zlatni_medvjed`=`zlatni_medvjed`+:zm"; 
    $updateparts[] = $zmpart; 
} 

$ck = trim($ck); 
if($ck != "") 
{ 
    $ckpart = "`crna_kraljica`=`crna_kraljica`+:ck"; 
    $updateparts[] = $ckpart; 
} 

$gv = trim($gv); 
if($gv != "") 
{ 
    $gvpart = "`gricka_vjestica`=`gricka_vjestica`+:gv"; 
    $updateparts[] = $gvpart; 
} 

$dk = trim($dk); 
if($dk != "") 
{ 
    $dkpart = "`dva_klasa`=`dva_klasa`+:dk"; 
    $updateparts[] = $dkpart; 
} 

$fk = trim($fk); 
if($fk != "") 
{ 
    $fkpart = "`fakin`=`fakin`+:fk"; 
    $updateparts[] = $fkpart; 
} 

$updatepartstring = implode(",",$updateparts); 

$update_query="UPDATE `stanje_piva` 
SET 
$updatepartstring 
WHERE `id`=1"; 



// Then we prepare, and execute the query 
$stmt = $pdo->prepare($update_query); 

$stmt->execute(array("zm" => $zm, "ck" => $ck, "gv" => $gv, "dk" => $dk, "fk" => $fk)); 

?> 
+0

編輯您的答案,而不是編寫超過1個答案。 –

+0

我在C:\ xampp \ htdocs \ app2 \ app \ database \中遇到了'致命錯誤:帶有消息'SQLSTATE [HY093]:無效參數編號:綁定變量數與令牌數不匹配'的未捕獲異常'PDOException' unos-piva.php:75 Stack trace:#0 C:\ xampp \ htdocs \ app2 \ app \ database \ unos-piva.php(75):PDOStatement-> execute(Array)#1 {main}拋出C: \ xampp \ htdocs \ app2 \ app \ database \ unos-piva.php on line 75' – strava1

+0

這項工作,但是當我離開空輸入時,我得到了那個錯誤 – strava1