jonagoldman
jonagoldman

Reputation: 8754

MySQLi PHP: Check if SQL INSERT query was fully successful using MySQLi

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

Answers (2)

Alix Axel
Alix Axel

Reputation: 154513

From the PHP Manual on mysqli_stmt::execute:

mysqli_stmt::execute -- mysqli_stmt_executeExecutes a prepared Query

Returns 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

Salman Arshad
Salman Arshad

Reputation: 272006

I believe you can use mysqli_stmt->affected_rows to return the number of rows inserted (or changed or deleted).

Upvotes: 4

Related Questions