我的问题是:我在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 ()
也许 吧???我该怎么修?
两个代码示例必须一个接一个!!因为检查了钱的价值。。
2条答案
按热度按时间1hdlvixo1#
不需要第一个
SELECT
循环,只要把条件money
进入UPDATE
查询本身。v64noz0r2#
请尝试此操作以仅获取一条记录:
它只获取您需要的记录,因为它在您计划更新的两个参数上都有一个where子句,而不是像以前那样在fbid上只进行部分匹配。
在你得到3条记录之前,因为你有一个部分键搜索,然后循环通过记录和更新同一个记录一遍又一遍,不管你循环的记录中键的第二部分的值是多少。