PHP while() 函数运行我的查询 3 次

标签 php mysql mysqli

我的问题是: 我在 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 的帐户,并且我有三个名字,例如,JohnJoe、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/

相关文章:

php - 除非我关闭 mysqli 连接,否则连续查询不会运行

php - 如何在 PHP 中计算一个月中的秒数?

php - 如何构建一个查询,对切换发件人和收件人的交易余额进行求和

Mysql - 从左连接获取多个最后结果

mysql - Ruby on Rails、MySQL 和 Snow Leopard

php - 新的 mysqli() 调用可以从 cli 运行,但通过 apache httpd 失败

php - 我可以将我的 2 个选择查询合并为一个吗?

php - 阿拉伯字符的 PDO 数据库

php - 使用友好的 URL 提交 CakePHP 表单

Mysql嵌套选择与多个连接条件连接表