我的更新查询是
"UPDATE registration SET `dob` = '".$theDate."' , pwd='".$_REQUEST['n_password']."', name='".$_REQUEST['n_name']."' where id='".$_SESSION['id']."' "
问题是,用户不必更新所有字段,所以如果发生这种情况,表单中会有空值,它会替换数据库中以前的值。
我可以在检查字段值是否为空后逐一更新它,但如果有其他方法,请帮助我
我可以在检查字段值是否为空后逐一更新它但是如果有其他方法r教程请帮助我
在检查每个值后不要发出UPDATE
查询,而是将该列添加到正在构建的查询中,然后只使用具有值的列执行一个UPDATE
。
$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);