2016-04-25 2 views
1

Das ist Cancel_order-Funktion, die auch in der increase_gameamount() Funktion aufrufen, ich versuche increament_gameamount() Funktion aufrufen funktioniert, aber wenn ich versuche, anzurufen Von der While-Schleife ändert sich nichts in der Datenbank.alle meine PHP-Syntax ist wahr, aber Update-Abfrage funktioniert nicht in while-Schleife

//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; 
} 
+0

Sie sind nicht eine zweite Variable auf Ihre Anfrage in 'Bindung increament_gameamount' –

+0

können Sie mir die richtige Syntax sagen – John

+0

aber ich Funktion nenne increament_gameamount von einer anderen PHP-Seite, es ohne Fehler funktioniert, bedeutet es, dass das Problem ist nicht in der Funktion, die es mir scheint, bitte sagen Sie mir die richtige Syntax und danke – John

Antwort

1

Wie ich in den Kommentaren angegeben ich glaube, Sie auf den WHERE Ihre Abfrage fehlschlagen, weil

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

ist $ gd eine Zeichenfolge wie 125<br> machen und die DB, dass nicht finden kann.

Auch dies würde einen Fehler verursachen, aber wenn die Art Ihrer Spalte int ist und Sie passieren:

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

wieder Sie $ Menge etwas wie 1000<br> machen und das wäre nicht wieder würde dies ein Fehler sein, die oben für die ID-Prüfung nicht.

UPDATE

Nur erkannte ich nicht specifially die Auflösung angegeben habe. Setzen Sie die Variablen, dann echo sie und Sie sollten alle gut sein.

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

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