![](/img/trans.png)
[英]How to update table1 with content from table2 with php and mysql
[英]MySQLi query from table1 and update details to table2
我沉迷于以下问题达数周之久,找不到解决方案:
我有两个数据库表。 我想使用MySQLi查询从第一行中选择一行,从另一行中选择更多行。 第一个表名为'users'
,在这里我存储用户当前的钱信息。 第二张表存储有关他的'pets'
的信息。 我到现在为止...但是我也想通过单击提交来更新宠物的信息之一。
所以这是我的代码:
$statement = $mysqli->prepare("SELECT money FROM users WHERE fbid = ?");
$statement->bind_param("s", $_SESSION['FBID']);
$statement->execute();
$statement->bind_result($money);
while ($statement->fetch());
$statement->close();
if($stmt = $mysqli->prepare("SELECT clean,health,petname FROM pets WHERE fbid = ?")){
$stmt->bind_param('s',$_SESSION['FBID']);
$stmt->execute();
$stmt->store_result();
$num_of_rows = $stmt->num_rows;
$stmt->bind_result($clean,$health,$petname);
while ($stmt->fetch()) {
if($_GET['buy']=='clean' && $money>='5' && $clean<='95'){
$stmt2 = $mysqli->prepare("UPDATE pets SET `clean` = `clean` + 5 WHERE fbid = ? AND petname = ?");
$stmt2->bind_param("ss", $_SESSION['FBID'],$_GET['identifier']);
$stmt2->execute();
$stmt2->close();
$stmt3 = $mysqli->prepare("UPDATE users SET `money` = `money` - 5 WHERE fbid = ?");
$stmt3->bind_param("s", $_SESSION['FBID']);
$stmt3->execute();
$stmt3->close();
header( "Location: /pets.php?success=clean" );
}
if($_GET['buy']=='health' && $money>='7' && $health<='90'){
$stmt4 = $mysqli->prepare("UPDATE pets SET `health` = `health` + 10 WHERE fbid = ? AND petname = ?");
$stmt4->bind_param("ss", $_SESSION['FBID'],$_GET['identifier']);
$stmt4->execute();
$stmt4->close();
$stmt5 = $mysqli->prepare("UPDATE users SET `money` = `money` - 7 WHERE fbid = ?");
$stmt5->bind_param("s", $_SESSION['FBID']);
$stmt5->execute();
$stmt5->close();
header( "Location: /pets.php?success=health" );
}
echo "".$petname." welcomes you!<br>";
if($health<='90' && $money>='7'){
echo "<form method='GET'><input type='hidden' name='identifier' value='".$petname."'><input type='hidden' name='buy' value='health'><input type='submit' value='Healthcare (G$7)'></form>";
}
if($clean<='95' && $money>='5'){
echo "<form method='GET'><input type='hidden' name='identifier' value='".$petname."'><input type='hidden' name='buy' value='clean'><input type='submit' value='Clean (G$5)'></form>";
}
}
$stmt->free_result();
$stmt->close();
}
直到我单击“提交”,它才能完美运行。 然后,它会更新所选宠物的价格,但会更新我拥有的宠物的次数。 我只想更新一次,但是我必须在一页上打印所有宠物信息。
那我该怎么办呢?
(我不能使用get_result()
因为它没有安装在服务器上!)
谢谢大家!
将用于更新宠物的逻辑与用于显示宠物的逻辑分开。 您目前在显示循环中,因此每次显示循环迭代都会更新一只宠物。 当您将更新代码移到while循环外时,您只会更新一次宠物信息,但仍会循环显示所有宠物。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.