簡體   English   中英

MySQLi從表1查詢並將詳細信息更新到表2

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM