如何防止空值更新MySQL数据库

时间:2012-08-25 15:16:27

标签: mysql forms

我的更新查询是

"UPDATE registration SET `dob` = '".$theDate."' , pwd='".$_REQUEST['n_password']."', name='".$_REQUEST['n_name']."' where id='".$_SESSION['id']."' "

问题是用户没有必要更新所有字段,所以如果它发生了,那么表格中会有空值,它将替换数据库中的早期值。

我可以在检查字段值是否为空后逐个更新它,但是如果还有其他方法,请教我帮助

1 个答案:

答案 0 :(得分:0)

  

在检查字段值是否为空之后,我可以逐个更新它   但如果还有其他任何方式教程请帮帮我

在检查每个值后,不要发出UPDATE查询,而是将该列添加到您正在构建的查询中,然后仅使用具有值的列执行一个UPDATE。 / p>

$dbh = new PDO('mysql:host=localhost;dbname=whatever', 'user', 'password');
$params = array();

$sql = "UPDATE REGISTRATION SET `dob` = ?";
$params[] = $theDate;

if (!empty($_REQUEST['n_password'])) {
  $sql .= ", `pwd` = ?";
  $params[] = $_REQUEST['n_password'];
}

if (!empty($_REQUEST['n_name'])) {
  $sql .= ", `name` = ?";
  $params[] = $_REQUEST['n_name'];
}

$sql .= " WHERE `id` = ?";
$params[] = $_SESSION['id'];

$stmt = $dbh->prepare($sql);
$stmt->execute($params);