是php-mysql:根据涉及PHP变量的条件更新具有不同值的列

Posted

技术标签:

【中文标题】是php-mysql:根据涉及PHP变量的条件更新具有不同值的列【英文标题】:Is php-mysql: update column with different values depending on condition involving PHP variable 【发布时间】:2019-07-20 11:06:39 【问题描述】:

我在 php 中有一个带有字符串变量 $participant1, participant2$winner 的网络表单。发布表单时,它会更新 my_table 中两行的列 participantwinnerwinner 的列类型为 BOOLEAN

这是我的桌子目前的样子:

ID |Game |Participant | Winner
-------------------------------
1     1     John          NULL
2     1     Frank         NULL

提交的变量$winner 将是participant 的名称(“John”或“Frank”)。提交后,我希望为字符串$winner 匹配的任何参与者设置10 代表其他参与者。

即如果$participant1 =='John' and $winner=='John' 那么表格应该是这样的:

ID |Game |Participant | Winner
-------------------------------
1     1     John          1
2     1     Frank         0

我似乎无法弄清楚这部分。

我试过了:

$participant1= mysqli_escape_string( $con, $params['participant1']);
$participant2= mysqli_escape_string( $con, $params['participant2']);
$Winner= mysqli_escape_string( $con, $params['Winner']);    

mysqli_query($con, "UPDATE my_table SET Winner = IF('$Winner'=='$participant1',1,0) WHERE Participant ='$participant1');

mysqli_query($con, "UPDATE my_table SET Winner = IF('$Winner'=='$participant2',1,0) WHERE Participant ='$participant2'");

Winner 之后仍然显示NULL。有没有一种主要的 MySQL 方法来做到这一点?

【问题讨论】:

mysqli_query($con, "UPDATE my_table SET Winner = '". $Winner==$participant1 ? 0 : 1 ."' WHERE Participant ='$participant1' "); 【参考方案1】:

嘿,将 == 替换为 =

mysqli_query($con, "UPDATE my_table SET Winner = IF('$Winner'='$participant1',1,0) WHERE Participant ='$participant1'");

测试代码:

$mysqli = new mysqli("localhost", "root", "", "test");
$a='John';
$b='Mary';

$w='John';

mysqli_query($mysqli, "UPDATE myguest SET Winner = IF('$a'='$w',1,0) WHERE FirstName ='$a'");
mysqli_query($mysqli, "UPDATE myguest SET Winner = IF('$b'='$w',1,0) WHERE FirstName ='$b'");   

【讨论】:

以上是关于是php-mysql:根据涉及PHP变量的条件更新具有不同值的列的主要内容,如果未能解决你的问题,请参考以下文章

如何正确使用连接/子查询从多个表中选择数据? (PHP-MySQL)

包含 php-mysql 连接文件时显示空白页

PHP-MYSQL:将 Unix 时间戳转换为 DateTime,反之亦然

编程笔记php-mysql环境搭建

Linux环境安装xmapp(PHP-Mysql集成环境)

如何有条件地同时多线程和更新变量?