phpmysqlmysqliprepared-statement

Multiple MYSQLi prepared statements


I am just learning how to use MYSQLi prepared statements so please go easy on me. I can get these to work individually but when I put them together they don't work.

$con = my connection details. 

This is my code for the queries:

// Insert the review into DB 
$stmt = $con->prepare("INSERT INTO reviews (order_id, comment) VALUES (?, ?)");
$stmt->bind_param('is', $order_id, $comment);
$stmt->execute(); 
$stmt->close();


// Update transactions to show review added
$stmt = $con->prepare("UPDATE transactions SET review = ? WHERE order_id = ?");
$stmt->bind_param('ii', 1, $order_id);
$stmt->execute(); 
$stmt->close(); 

Thanks in advance for your help! Much appreciated.


Solution

  • Your code is good however you shouldn't name them the same name $stmt

    The first statement is $stmt

    Then give the second statement another name, like $stmt2 or whatever name you like.

    example:

    $stmt = $con->prepare("INSERT INTO reviews (order_id, comment) VALUES (?, ?)");
    $stmt->bind_param('is', $order_id, $comment);
    $stmt->execute(); 
    $stmt->close();
    
    
    // Update transactions to show review added
    $stmt2 = $con->prepare("UPDATE transactions SET review = ? WHERE order_id = ?");
    $stmt2->bind_param('ii', 1, $order_id);
    $stmt2->execute(); 
    $stmt2->close(); 
    

    and to debug your code and see where the error(s) is/are use this.

    if ($stmt = $con->prepare("INSERT INTO reviews (order_id, comment) VALUES (?, ?)") ){
       $stmt->bind_param('is', $order_id, $comment);
       $stmt->execute(); 
       $stmt->close();
        }
     else {printf("Error message:: %s\n", $con->error);}