首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >只使用非空值更新MYSQL行

只使用非空值更新MYSQL行
EN

Stack Overflow用户
提问于 2015-02-13 12:05:55
回答 2查看 1.3K关注 0票数 0

我有一个包含大量行的表,我需要用特定的ID更新行,例如,假设我有一行包含以下详细信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Id= 1
Name= lessa
Address = USA

现在,我使用下面的PHP代码更新行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
$con = mysqli_connect("localhost","MyUserName","MyPassword","DB");
$id = '1';
$name = "";
$address = "UK";
// update only non value items
$r=mysqli_query($sql);
mysqli_close($con);
?>

现在我的问题是,由于address的值从USA更改为UK,所以我只需要更新这个值,而且由于名称值不算什么,所以应该保留名称,所以在更新该行后应该如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ID=1
Name = lessa
Address = UK

另外,如果在另一个时间名称值更改和地址保持不变,我只需要更新名称。

此外,假设我有100列,而不仅仅是三列,作为这个示例。

对于编写更新语句的任何帮助都将不胜感激。

更新:

我使用下面的代码,但没有更新:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
$con = mysqli_connect(DB info);
$id = 'jo_12';
$name = "";
$address = "UK";
$sql = "UPDATE info
        SET name = IF(? = '', name, ?),
            address = IF(? = '', address, ?)
        WHERE id = ?";
$stmt = $con->prepare($sql);
$stmt->bind_param("ssssi", $name, $name, $address, $address, $id);
$stmt->execute();

mysqli_close($con);
?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-13 12:12:23

将测试放在UPDATE查询中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$sql = "UPDATE yourTable
        SET name = IF(? = '', name, ?),
            address = IF(? = '', address, ?)
        WHERE id = ?";
$stmt = $con->prepare($sql) or die ($con->error);
$stmt->bind_param("sssss", $name, $name, $address, $address, $id);
$stmt->execute();

如果变量为空,则IF()测试将该列的旧值赋值给它。

票数 4
EN

Stack Overflow用户

发布于 2015-02-13 12:11:25

尝试使用此SQL查询:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
UPDATE table_name SET Address='UK' WHERE ID=1

当然,您可以用ID=1代替任何其他数字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28507871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文