我想知道所选行的所有列是否具有相等的值。如果所有值都相同,我想执行一些操作。
id (tableA) id2 (reference tableB) status
-------------------------------------------
1 2 On
2 2 Off
3 3 On
4 3 On
如果id2 = 3具有相同的status {// perform action here}值。 如何检查id = 3的值然后在这里执行一些操作?我正在使用mysql和php。
我不知道我做得对不对:
$change = mysql_query("SELECT status from tableA where status = 'On' and id=3 ");
if ($change == 'On')// if all the columns
{ mysql_query(" UPDATE tableB
SET status2 = 'On Going' where id2 =3")or die(mysql_error());
}
结果应在表B中更新:
id status2
---------------
3 On Going
答案 0 :(得分:0)
$change = mysql_query("SELECT `stat` from `order_details`
where `stat` = 'Cancelled'");
$res=mysql_fetch_array($change);
请记住,如果您想要循环
时必须使用的所有记录,它将仅从数据库中获取最后一个值 if ($res == "Cancelled")
{
mysql_query("UPDATE `order1`
SET `status` = 'Cancelled' where `order_id` ='".$order_id."'")or die(mysql_error());
}
试试这个......
答案 1 :(得分:0)
mysql_num_rows()
功能来实现目标。status
列名称与stat
列名称不同吗?他们不是同一个栏目?'
)对查询中的变量进行参数化。mysql_real_escape_string()
功能。mysqli_* prepared statement
而不是弃用的mysql_*
来阻止SQL injections。您修改后的代码:
$change = mysql_query("SELECT stat FROM order_details WHERE stat = 'Cancelled'");
if (mysql_num_rows($change) == 1){ /* IF THE QUERY FOUND 1 RESULT */
mysql_query("UPDATE order1 SET status = 'Cancelled' WHERE order_id = '$order_id'") or die(mysql_error());
}
如果您要在准备好的声明中这样做:
if($stmt = $YourConnectionDB->prepare("SELECT stat FROM order_details WHERE stat = 'Cancelled'")){
$stmt->execute();
$stmt->store_result();
$numberofrows = $stmt->store_result();
if($numberofrows == 1){
if($stmt2 = $YourConnectionDB->prepare("UPDATE order1 SET status = 'Cancelled' WHERE order_id = ?")){
$stmt2->bind_param("i",$order_id);
$stmt2->execute();
$stmt2->close();
} /* END OF SECOND PREPARED STATEMENT */
} /* END OF CHECKING NUMBER OF ROWS */
$stmt->close();
} /* END OF PREPARED STATEMENT */