我想更新 mysql 表中的数据,如果列 store_url 值与列 site_url 完全相同,则列 title_modal 将被更新

Posted

技术标签:

【中文标题】我想更新 mysql 表中的数据,如果列 store_url 值与列 site_url 完全相同,则列 title_modal 将被更新【英文标题】:I want to update data in a mysql table where is Column title_modal will be updated if Column store_url value is exact equal to column site_url 【发布时间】:2021-10-18 13:02:49 【问题描述】:

我有一个名为 "widget_cont" 的表和 3 个不同的列 "title_modal""store_url""site_url"

我想更新列“title_modal”,其中“store_url”和“site_url”是相同的值,例如:“google.com”=“google.com” 但是,有多行具有相同类型的列,但值不同,例如:“facebookcom”=“facebook.com”。

我尝试过的是:

if(isset( $_POST['title_modal']) )
   
    $title_modal = mysqli_real_escape_string($conn, $_POST['title_modal']);
   
    if( isset($title_modal) )
        
        $query_title_modal = "UPDATE widget_cont SET title_modal='$title_modal' WHERE store_url= 'site_url' ";
        echo  $_POST['title_modal'];
    
   
    if( !mysqli_query($conn, $query_title_modal) )
        echo "ERROR: " . mysqli_error($conn);
    

每次在错误的同一行中更新值。如果我将静态 URL 放在“site_url”列中,它就可以工作。 看起来解决方案很简单,但我还没有成功。有人可以帮忙吗?谢谢。

【问题讨论】:

【参考方案1】:
store_url= 'site_url'

错了。由于引号,它将site_url 视为文字字符串,而不是列名。换句话说,它将尝试查找 store_url 列包含实际文本“site_url”的行。我猜您没有任何包含此类内容的行,显然这不是您的意图。

如果要更新这两列相等的所有行,请使用

store_url= site_url

不带引号。

【讨论】:

【参考方案2】:

WHERE store_url= 'site_url' 将返回 store_url字符串 'site_url' 的项目,很可能不会返回任何项目。去掉引号,替换

$query_title_modal = "UPDATE widget_cont SET title_modal='$title_modal' WHERE store_url= 'site_url' ";

$query_title_modal = "UPDATE widget_cont SET title_modal='$title_modal' WHERE store_url=site_url";

【讨论】:

以上是关于我想更新 mysql 表中的数据,如果列 store_url 值与列 site_url 完全相同,则列 title_modal 将被更新的主要内容,如果未能解决你的问题,请参考以下文章

mysql表中的不可更新列

Mysql根据不同的行更新表中的行值

MySQL数据类型 - 日期和时间类型

mysql表中的时间列

MySQL 中怎么把数据库表的一列置空?

如果值不存在,将值插入 MySQL 表?