gpt4 book ai didi

PHP SQL UPDATE 仅当发布数据具有使用 COALESCE() 给出的输入时

转载 作者:行者123 更新时间:2023-11-29 21:09:45 25 4
gpt4 key购买 nike

嘿伙计们,我读过很多关于此的帖子(非常旧),并且我已经尝试了其中的所有内容,但我似乎无法找出问题所在..

所以我有一个用于更新表记录的表单。但是如果没有输入名称,那么它不会保留原始名称并更新其余部分,它只是用空字符串替换它。

我尝试过使用 COALESCE() 但它无法将我的 php 代码中的任何内容识别为 NULL 值。

如果我不加引号 '',那么我会收到 SQL 错误,但如果我这样做,它不会被识别为 null..

例如,如果我通过 ssh 登录并运行 MySQL 并输入..

选择合并('','测试');

那么 MySQL 只显示空字符串,而不显示其中包含内容的字符串。

似乎无法在没有引号问题的情况下使用后变量进行查询。

这是我的代码...

/* Original query that replaces with empty input feilds...
$update = "UPDATE KIT202_product SET Name='". $_POST['name']
. "', Price='". $_POST['price']
. "', Description='". $_POST['desc']
. "' WHERE ID=". $_POST['id'];
*/

//What I ended up trying but still doesn't work :(...
$name=NULL;
if (!empty($_POST['name'])) $name="'". $_POST['name']. "'";
$price=NULL;
if (!empty($_POST['price'])) $price="'". $_POST['price']. "'";
$desc=NULL;
if (!empty($_POST['desc'])) $desc="'". $_POST['desc']. "'";

这不起作用,因为 null 只传递任何内容而不是 NULL,因此它就像仅使用 1 个值运行合并。

最佳答案

如果您做两件事会怎样:1)为您的字段创建一个小型验证函数; 2) 拆分更新,仅更新已通过验证的内容。因此,松散地:

$updatePrefix = "UPDATE KIT202_product SET ";
$updateSuffix = "WHERE ID=". $_POST['id']; // You should first these for injection

$conditions = '';
if (isValid($_POST['name'])) $conditions .= " Name='".$_POST['name']."'";
if (isValid($_POST['price'])) {
if ($conditions != '') $conditions .= ', ';
$conditions .= " Price= '".$_POST['price']."'";
}
if (isValid($_POST['desc'])) {
if ($conditions != '') $conditions .= ', ';
$conditions .= " Description= '".$_POST['desc']."'";
}

if ($conditions != '') $query = $updatePrefix . $conditions . $updateSuffix;

function isValid($input) {
return (!(empty($input) && $input == ''));
}

这应该可以满足您的需要。

更新:回答您的评论,是的,您可以使用 COALESCE。尝试这样的事情:

$name=NULL;
if (!empty($_POST['name'])) $name="'". $_POST['name']. "'";
$price=NULL;
if (!empty($_POST['price'])) $price="'". $_POST['price']. "'";
$desc=NULL;
if (!empty($_POST['desc'])) $desc="'". $_POST['desc']. "'";
$update = "UPDATE KIT202_product SET Name=COALESCE($name, KIT202.Name)"
. "', Price=COALESCE($price,KIT202.Price)"
. "', Description=COALESCE($desc, KIT202.Description)"
. "' WHERE ID=". $_POST['id'];

关于PHP SQL UPDATE 仅当发布数据具有使用 COALESCE() 给出的输入时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36486136/

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