我有一個數據庫包含成千上萬的行,用戶可以通過提供更新的值更新他/她的行,我需要更新行只有非空值由用戶,如果由用戶所提供的值是空的先前的數據應該被保持,例如:只更新非空輸入值在MySQL中使用PHP
id=1
name = John
address = USA
如果用戶提供空值和地址與英國值名稱那麼數據應該是:
id=1
name =John
address = UK
任何幫助與PHP代碼示例將不勝感激。
我有一個數據庫包含成千上萬的行,用戶可以通過提供更新的值更新他/她的行,我需要更新行只有非空值由用戶,如果由用戶所提供的值是空的先前的數據應該被保持,例如:只更新非空輸入值在MySQL中使用PHP
id=1
name = John
address = USA
如果用戶提供空值和地址與英國值名稱那麼數據應該是:
id=1
name =John
address = UK
任何幫助與PHP代碼示例將不勝感激。
您應該遍歷超全局的$_POST
並構建一個不包含空值的插入新數組,然後將其用於查詢而不是直接使用$_POST
。
$update = array();
foreach ($_POST as $key => $value) {
if(!is_null($value) && !($value == ''))
$update[$key] = $value;
}
然後使用$update
您所查詢的參數,不應包含任何null值或空值。
我用PDO連接
首先創建一個表並插入如下
create table testing(id int(11), name varchar(100),address varchar(200));
insert into testing values(100,'Null','California');
insert into testing values(200,'sectona','California');
pdo_connect.php
<?php
$db = new PDO (
'mysql:host=localhost;dbname=yourdbname;charset=utf8',
'root', // username
'root' // password
);
?>
<?php
pdo_connect.php
// from form inputs
/*
$id=$_POST["id"];
$name=$_POST["name"];
$address=$_POST["address"];
*/
// direct variable initialisation
/*
$id='100';
$name = 'John';
$name = 'Null';
$address = 'California';
*/
// initialize a null value
$check ='Null';
// check null value for name variable in the first insert statement
$resultn = $db->prepare('SELECT * FROM testing where name = :name');
$resultn->execute(array(
':name' => 'Null'
));
while ($row = $resultn->fetch())
{
$nm = $row['name'];
}
if ($nm == $check)
{
echo '<b><font color=red><b></b>You cannot update with a Null Value</font></b>';
exit();
}
// update if name is not null
$update = $db->prepare('
UPDATE testing SET
name = :name,address = :address
WHERE id= :id');
$update->execute(array(
':name' => 'yourname',
':address' => 'USA',
':id' => '100'
));
echo 'update successful';
?>
finall利用數據庫中的非空值進行更新,然後代以下代碼在查詢語句中
$resultn = $db->prepare('SELECT * FROM testing where name = :name');
$resultn->execute(array(
':name' => 'sectona'
));
請不要要求用戶將你的標記標記爲正確。你的答案將根據其優點來判斷,而不是懇求。 – ceejayoz 2015-02-12 04:25:15
http://php.net/is_null和/或http://php.net/empty – ceejayoz 2015-02-11 20:22:02
發佈您嘗試的代碼。 – developerwjk 2015-02-11 20:22:57
是的,但如果我有超過20的價值,它不容易檢查每個值 – 2015-02-11 20:22:59