gpt4 book ai didi

PHP 表单仅在不为 null 时更新 MySql

转载 作者:行者123 更新时间:2023-11-29 12:38:23 26 4
gpt4 key购买 nike

目前,我有一个更新函数,可以更新一行,但如果我将其中一个框留空,而不是不更改该值,则该值将被删除。如果我只需要更新其中一个值,我想更新该值并将其他框留空。这可能吗?

目前我的代码是这样的。

<?php
$key = $_POST['key'];
$value1 = $_POST['value1'];
$value2 = $_POST['value2'];
UPDATE table SET value1 = '$value1',value2 = '$value2' WHERE key = '$key';
?>

最佳答案

您必须检查每个值以查看其是否为空,如果是,请修改查询字符串以从 SET 子句中删除该字段。

类似这样的事情:

<?php
$set = array();

// make sure the user doesn't attempt to POST a column that doesn't exist in our table,
// which will lead to a SQL error, or worse, allow the user to run custom SQL.
$columns = array('value1', 'value2');

foreach ($_POST as $key=>$value) {
if (in_array($key, $columns) && $value != '') {
$set[] = $key ." = '". mysql_real_escape_string($value) ."'";
}
}

if (!empty($set)) {
$query = "UPDATE table SET ". implode(', ', $set) ." WHERE `key` = '". mysql_real_escape_string($_POST['key']) ."'";
}

还请注意,我使用了mysql_real_escape_string()。这是为了防止 SQL 注入(inject)。我不知道您正在使用什么 MySQL 库,但您应该对您使用的任何内容使用适当的清理方法。实际上,您不应该使用常规的 mysql_* 库,因为它已被弃用。相反,我会推荐 PDO。

关于PHP 表单仅在不为 null 时更新 MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26435559/

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