gpt4 book ai didi

php - 如果输入变量为空,如何保持数据库表数据不变?

转载 作者:行者123 更新时间:2023-11-29 01:54:13 25 4
gpt4 key购买 nike

我遇到了一个问题,假设我有以下问题:

$stmt = $conn->prepare("UPDATE grades SET exam1=?, exam2=? WHERE user='$user' AND course='$course'");
$stmt->bind_param("ii", $exam1, $exam2);

我有 2 个不同的变量 $exam1, $exam2,所有这些都分配了来自 html 的表单数据。但是,当我提交表单时,我只想更新表中的某些数据,假设我更新了 $exam1 并省略了 $exam2 的输入字段,

$exam1 = $_GET['exam1']; 
$exam2 = $_GET['exam2']; //I did not insert a value for exam2 input field

这会将 gradesexam2 字段变为 0,而不是其原始值。

那么有什么办法可以防止空变量修改表数据呢?我本可以为不同的考试分别完成 2 个单独的准备语句,但我觉得必须有更好的方法,因为如果有很多列并且我只想更新一些怎么办?

最佳答案

我会动态构建您的查询。像这样的东西:

$sql = "
UPDATE
grades
SET
exam1 = ?
";

if ( ! empty($exam2) ) {
$sql.= " , exam2 = ? "
}
$sql.= " WHERE user='$user' AND course='$course'";


$stmt = $conn->prepare($sql);

if ( ! empty($exam2) ) {
$stmt->bind_param("ii", $exam1, $exam2);
} else {
$stmt->bind_param("i", $exam1);
}

顺便说一下,为什么您要为您的 exam1exam2 值使用绑定(bind)参数,而不是为您的 usercourse?

关于php - 如果输入变量为空,如何保持数据库表数据不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33602026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com