tags:

views:

568

answers:

2

Hi, 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??

A: 

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

Salman A
A: 

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?

Alix Axel
Err, no, it should read `$success = TRUE;` since you don't want to test for equality but want to assign a value to the $success variable.
wimvds
@wimvds: Ooops! Right, thanks.
Alix Axel