多少个苹果?一次在PHP中更新这些唯一的数据库条目

时间:2014-10-21 03:02:26

标签: php mysql mysqli

我有一个数据库:'example_DB',带有客户信息表:'custinfo_tb'和客户属性表:
'custatt_tb'。

custinfo_tb有collumns:

cust_id 
name 
apples 

苹果是每个顾客拥有的苹果数量!

custatt_tb有collumns:

cust_id 
age
allowance
favcolor 

现在,我正在尝试用PHP开发代码来确定客户收到的苹果数量。这取决于他们的年龄和津贴。但只有拥有某种喜爱颜色的顾客才能获得苹果。

例如:
乔恩已经有3个苹果和1个客户。他的津贴是25美元,而他最喜欢的颜色是蓝色 Jasmine已经有12个苹果和客户ID 2.她的津贴是10美元,他最喜欢的颜色是红色 Connor已经有2个苹果和3个客户。他的津贴是22美元,他最喜欢的颜色是绿色 理查德已经有8个苹果和4个客户。他的津贴是30美元,他最喜欢的颜色是红色。每个人都是12岁。

我需要更新两个表格的代码是什么:
任何喜欢红色的顾客都会获得更多苹果。他们获得的苹果数量为 苹果数=年龄*津贴
在上面的例子中,Jasmine将完成132个苹果,理查德将完成368个苹果。

这是一个我知道的奇怪问题,但出于隐私原因,我用苹果等实际代码代替!问题是一样的。
谢谢你的帮助!我有一种感觉,我需要在其他FOREACH语句中使用FOREACH语句,但我无法让它工作。谢谢。

编辑:这是我到目前为止所拥有的

$con=mysqli_connect("private","private","private","example_DB");
// Check connection
if (mysqli_connect_errno()) {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

session_start();



$color = $_POST["colorpicked"];
$age = $_POST["age"];


$getallowance = mysqli_query($con, "SELECT allowance FROM custatt_tb WHERE favcolor = '$color'");
$allowance= mysqli_fetch_array($getallowance);

foreach ($allowance as &$value) {

    $applesgiven= ($value * $age);
    $getnames = mysqli_query($con, "SELECT cust_id FROM custatt_tb WHERE favcolor= '$color' AND allowance = '$value'");
    $getnames2 = mysqli_fetch_array($getnames); 
    foreach ($getnames2 as &$value2 ) {

        $getapples = mysqli_query($con, "SELECT apples FROM custinfo_tb WHERE cust_id = '$value2'");
        $getapples2 = mysqli_fetch_array($getapples);
        $applesold = $getapples2['apples'];
        $applesnew = ($applesold + $applesgiven);

    if (!mysqli_query($con, "UPDATE custinfo_tb SET apples = '$applesnew' WHERE cust_id = '$value2'")) {
        // die('Error: ' . mysqli_error($con));
        //  }

    }
}

1 个答案:

答案 0 :(得分:0)

无需多次命中数据库,您可以在一个纯SQL查询中完成所有操作

UPDATE custinfo_tb c JOIN custatt_tb a
    ON c.cust_id = a.cust_id
   SET apples = apples + allowance * age
 WHERE a.favcolor = 'red';

结果:

| CUST_ID |    NAME | APPLES |
|---------|---------|--------|
|       1 |     Jon |      3 |
|       2 | Jasmine |    132 |
|       3 |  Connor |      2 |
|       4 | Richard |    368 |

这是 SQLFiddle 演示