Reputation: 8754
I have this big function that gets a lot of different data and insert it into multiple tables.. Not all the data is always available so not all the SQL INSERT queries are successful. I need to check which SQL INSERT query was fully successful and which wasn't to the do something with this data (like inserting into a log table or similar).
Just to give you an example of how I think it can be done:
$sql = 'INSERT INTO data_table (ID, column1, column2) VALUES(?, ?, ?)';
if ($stmt->prepare($sql)) {
$stmt->bind_param('iss', $varID, $var1, $var2);
if ($stmt->execute()) {
$success == TRUE; //or something like that
}
}
I'm not completely sure this is the best way and if its always really show if the data was inserted into the table... Any suggestions??
Upvotes: 10
Views: 28331
Reputation: 154513
From the PHP Manual on mysqli_stmt::execute
:
mysqli_stmt::execute
--mysqli_stmt_execute
— Executes a prepared QueryReturns TRUE on success or FALSE on failure.
if ($stmt->execute()) { // exactly like this!
$success = true;
}
You're doing it right... What's your dilemma?
Upvotes: 16
Reputation: 272006
I believe you can use mysqli_stmt->affected_rows
to return the number of rows inserted (or changed or deleted).
Upvotes: 4