I'm passing multiple INSERT statements in one PDO prepare statement and the execute works; however, if any of the inserts fail the the execute() always returns TRUE and catch() is never invoked.
$query = '
INSERT INTO resources SET
    resource_type_id = :audio_resource_type_id
    , resource_status_id = :resource_status_id
    , is_hosted = :is_hosted
    , category_id = :category_id
    , serve_url = :audio_serve_url
    , title = :title;
SET @audio_id = LAST_INSERT_ID();
INSERT INTO resources SET
    resource_type_id = :thumbnail_resource_type_id
    , resource_status_id = :resource_status_id
    , category_id = :category_id
    , serve_url = :thumbnail_serve_url
    , parent_resource_id = @audio_id;';
if ($audio_duration) {
    $query .= '     
    INSERT INTO audio_duration SET
    audio_id = @audio_id
    , duration_seconds = :audio_duration';
}
try {
    $sth = $dbi->dbh->prepare($query);
    $sth->bindParam('audio_resource_type_id', $this->resource_types['audio']);
    $sth->bindParam('thumbnail_resource_type_id', $this->resource_types['THUMBNAIL']);
    $sth->bindParam('resource_status_id', $resource_status_id);
    $sth->bindParam('category_id', $this->category_id);
    $sth->bindParam('audio_serve_url', $audio_serve_url);
    $sth->bindParam('thumbnail_serve_url', $thumbnail_serve_url);
    $sth->bindParam('title', $title);
    $sth->bindParam('audio_duration', $audio_duration);
    $sth->execute();
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage();
    log($e->getMessage());
    alert($e->getMessage());
    return FALSE;
}
Thank you for any thoughts on this.
 
    