我有一个数据库:'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));
// }
}
}
答案 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 演示