John
John

Reputation: 21

all of my php syntax is true,but update query is not working in while loop

This is cancel_order function,that also in it will call the increase_gameamount() function, i am trying to call increament_gameamount() function it works but when I try to call it from while loop nothing changes in database.

//cancel function
function cancel_order($ord) {   
  global $conn;
  $bqty = 0;
  $gqty = 0;
  $res = array();
  echo "entered cancel function " . $ord . "<br>";
  $st = "select (B_qty+G_qty) newqt, B_GM_ID from tb_basket b, tb_game g
    where b.B_GM_ID = g.G_ID
    and B_O_ID='$ord' "; 
  $sql = $conn->prepare($st); 
  $sql->execute(); 
  $sql->bind_result($newqt, $gid);
  $i = 0;
  while($row = $sql->fetch()) {
    $res[$i][0] = $newqt;
    $res[$i][1] = $gid;
    $i++;
  }
  $j = 0;
  $sql->free_result();
  $sql->close();
  while($j < sizeof($res)) {
    echo $gd = $res[$j][0] . "<br>";
    echo $qty = $res[$j][1] . "<br>";
    increament_gameamount($gd, $qty);
    $j++;
  }
}

//increament function
function increament_gameamount($gameid, $new_qty) {
  global $conn;
  echo "entered increament_gameamount function";
  echo $gameid;
  echo $new_qty;
  $varupdateqty = $conn->prepare("update tb_game set G_qty=? where  G_ID=?");           
  $varupdateqty->bind_param("ss", $new_qty, $gameid);
  $varupdateqty->execute();
  echo "Prepare failed: (" . $conn->errno . ") " . $conn->error;
}

Upvotes: 1

Views: 43

Answers (1)

nerdlyist
nerdlyist

Reputation: 2847

As I stated in the comments I think you are failing on the WHERE of your query because

echo $gd=$res[$j][0]."<br>";

is making $gd a string like 125<br> and the DB cannot find that.

Also, this would cause an error but if the type of your column is int and you pass:

echo $qty=$res[$j][1]."<br>";

again you make $qty something like 1000<br> and that would fail again this would be an error the above for ID check would not.

UPDATE

Just realized I did not specifially state the resolution. Set the variables then echo them and you should be all good.

$gd=$res[$j][0];
$qty=$res[$j][1];

echo $gd . "<br>" . $qty . "<br>";

Upvotes: 1

Related Questions