-1

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.

user3170837
  • 131
  • 2
  • 9
  • 3
    "Here is the code, go fix it for me" is not the kind of question Stack Overflow intended for. *At least* some effort in describing what's going on an how it is "not work" is expected. – Your Common Sense Mar 16 '14 at 10:24
  • 1
    @user3170837: regarding your last (deleted) post. If you don't like someone's comment contribution, ignore it or report to moderator as appropriate. I would be mildly of the view that the deleted question was on-topic, since it is not substantial enough for _Code Reivew_, but we try to avoid questions that are excessively localised too. It's a difficult balance. – halfer Mar 16 '14 at 14:41
  • Thanks for your comment Halfer, I didn't know there was such a function to report a comment on this site. Moreover, thanks for your help on the type/style of questions that I should ask next time. **+1** for support. – user3170837 Mar 16 '14 at 14:45

2 Answers2

2

your code is good however you should dont name them the same name $stmt

the first statment is $stmt

then give second statment other name like $stmt2. or what ever 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 is the error 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);}
echo_Me
  • 36,552
  • 5
  • 55
  • 77
0

You can use $stmt2, but if you are already closing $stmt there is no need to use $stmt2. Once you have closed $stmt you are free to use it again

Thomas Williams
  • 1,468
  • 1
  • 15
  • 32