是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
中两行的列 participant
和 winner
。 winner
的列类型为 BOOLEAN
。
这是我的桌子目前的样子:
ID |Game |Participant | Winner
-------------------------------
1 1 John NULL
2 1 Frank NULL
提交的变量$winner
将是participant
的名称(“John”或“Frank”)。提交后,我希望为字符串$winner
匹配的任何参与者设置1
。 0
代表其他参与者。
即如果$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)