我的问题是: 我在 MySQL 中有一个用户表。我用 MySQLi 做了一个查询,看起来像:
if($stmt = $mysqli->prepare("SELECT condition,name,money FROM users WHERE fbid = ?")){
$stmt->bind_param('s',$_SESSION['FBID']);
$stmt->execute();
$stmt->store_result();
$num_of_rows = $stmt->num_rows;
$stmt->bind_result($condition,$name,$money);
while ($stmt->fetch()) {
这是我的问题,因为我希望不同的用户将相同的用户名添加到他们的 ID。所以,我的代码如下:
if($_GET['name']!='' && $money>'500'){
$stmt2 = $mysqli->prepare("UPDATE users SET `condition` = `condition` + 5, `money` = `money` - 5 WHERE fbid = ? AND name = ?");
$stmt2->bind_param("ss", $_SESSION['FBID'],$_GET['name']);
$stmt2->execute();
$stmt2->close();
我只想更新数据库中用户 ID = $_SESSION[fbid]
和名称 = $_GET[name]
的值。因此,如果我有一个 ID 为 1922838445
的帐户,并且我有三个名字,例如,John
、Joe
、Jill 和 $ _GET[name]=='Joe'
然后仅更新具有相同 ID 的那个值。它一直工作到那个时候只更新得到的值,但它做了 3 次......可能是因为 while ()
???我该如何解决?
两个代码示例必须接一个!!因为检查钱的值(value)..
最佳答案
不需要第一个 SELECT
和循环,只需将 money
的条件放入 UPDATE
查询本身即可。
if ($_GET['name'] != '') {
$stmt = $mysqli->prepare("
UPDATE users
SET condition = condition + 5, money = money - 5
WHERE fbid = ? AND name = ?
AND money > 500")
$stmt->bind_param("ss", $_SESSION['FBID'], $_GET['name']);
$stmt->execute();
}
关于PHP while() 函数运行我的查询 3 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48349059/