Php 检查选定行中列的所有值

Php 检查选定行中列的所有值,php,mysql,Php,Mysql,我想知道所选行的所有列是否都具有相同的值。如果所有的值都相同,我想执行一些操作 id (tableA) id2 (reference tableB) status ------------------------------------------- 1 2 On 2 2 Off 3 3 On

我想知道所选行的所有列是否都具有相同的值。如果所有的值都相同,我想执行一些操作

id (tableA)   id2 (reference tableB) status
-------------------------------------------
     1               2               On 
     2               2               Off
     3               3               On
     4               3               On
如果id2=3具有相同的状态值{//此处执行操作}。 如何检查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
请记住,如果您想要循环时必须使用的所有记录,它将只从数据库中获取最后一个值

    if ($res == "Cancelled")
{


         mysql_query("UPDATE `order1` 
                 SET `status` = 'Cancelled' where `order_id` ='".$order_id."'")or die(mysql_error());
    }
试试这个

您可能希望使用PHP的mysql_num_rows函数来实现您的目标。 您确定状态列名与统计列名不同吗?它们不是同一列吗? 使用“勾号”将查询中的变量参数化。 至少使用mysql\u real\u escape\u字符串函数。 您应该练习mysqli_*prepared语句,而不是不推荐使用的mysql_*来防止。 您的修订代码:

$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 */

请编辑您的问题,并包括您想要返回的样本数据结果。您想要执行什么操作?id2=3具有与状态菜单相同的值??我如何知道$res==Cancelled?您正在查询中匹配条件,然后未能获取匹配结果,这是我已更正的。感谢您修改我的代码$change=mysql\u query从订单详细信息中选择stat,其中stat='Cancelled'和order\u id=$order\u id;如果mysql\u num\u rows$change==1{/*如果查询找到1个结果*/mysql\u queryUPDATE order1 SET status='Cancelled',其中order\u id='$order\u id'或diemsql\u error;}@chang-它解决了您的问题吗?如果是这样,你可以接受我的答案,或者直接投票。order\u id=$order\u id-这是你给出的代码中唯一缺少的一行,但它现在正在工作。非常感谢你的帮助!
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 */