php while()函数正在运行我的查询3次

d6kp6zgx  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(358)

我的问题是:我在mysql中有一个users表。我用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 ,吉尔和 $_GET[name]=='Joe' 然后在相同的id上只更新该值。它一直工作到只更新got值,但它会这样做3次。。。因为 while () 也许 吧???我该怎么修?
两个代码示例必须一个接一个!!因为检查了钱的价值。。

1hdlvixo

1hdlvixo1#

不需要第一个 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();
}
v64noz0r

v64noz0r2#

请尝试此操作以仅获取一条记录:
它只获取您需要的记录,因为它在您计划更新的两个参数上都有一个where子句,而不是像以前那样在fbid上只进行部分匹配。
在你得到3条记录之前,因为你有一个部分键搜索,然后循环通过记录和更新同一个记录一遍又一遍,不管你循环的记录中键的第二部分的值是多少。

if($stmt = $mysqli->prepare("SELECT condition,name,money FROM users WHERE fbid = ? AND name = ?")){

 $stmt->bind_param("ss", $_SESSION['FBID'],$_GET['name']);

 $stmt->execute();

相关问题