gpt4 book ai didi

php - MySQLi 从 table1 查询并将详细信息更新到 table2

转载 作者:行者123 更新时间:2023-11-29 10:25:41 25 4
gpt4 key购买 nike

我困扰了以下问题数周,但找不到解决方案:

我有两个数据库表。我想使用 MySQLi 查询从第一行中选择一行,并从另一行中选择更多行。第一个表名为'users',这里我存储用户当前的资金信息。第二个表存储有关他的“宠物” 的信息。我已经走了这么远...但我还想通过点击提交来更新其中一只宠物的信息。

这是我的代码:

$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 循环之外时,您只会更新宠物信息一次,但仍会在循环中显示所有宠物。

关于php - MySQLi 从 table1 查询并将详细信息更新到 table2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48354925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com