If you are using persistent connections (odbc_pconnect rather than odbc_connect) the next script that reuses the connection will inherit your changes to autocommit.
odbc_autocommit
(PHP 4, PHP 5)
odbc_autocommit — Active le mode d'autovalidation
Description
Sans le paramètre onoff , odbc_autocommit() retourne le statut d'autovalidation
Par défaut, l'autovalidation est activée. Désactiver l'autovalidation est équivalent à démarrer une transaction.
Liste de paramètres
- connection_id
-
L'identifiant de connexion ODBC, voir la documentation de la fonction odbc_connect() pour plus de détails.
- OnOff
-
Si OnOff vaut TRUE, l'autovalidation est activée. S'il est FALSE, l'autovalidation est désactivée.
Valeurs de retour
Sans le paramètre OnOff , odbc_autocommit() retourne le statut d'autovalidation de la connexion connection_id . Une valeur différente de 0 si le mode est activé, 0 s'il ne l'est pas, ou FALSE si une erreur survient.
Si OnOff est défini, cette fonction retourne TRUE en cas de succès,et FALSE si une erreur survient.
odbc_autocommit
06-Aug-2008 08:18
06-Apr-2005 06:58
Hi (i'm belgian then sorry for my english).
I think you can do more simple to check the errors :
$conn = odbc_connect($odbc,$user,$password)
or die($error);
odbc_autocommit($conn, FALSE);
odbc_exec($conn, $query1);
odbc_exec($conn, $query2);
if (!odbc_error())
odbc_commit($conn);
else
odbc_rollback($conn);
odbc_close($conn);
I'm not sure it's better to use odbc_error() than
odbc_error($conn). It seems to be the same result.
21-Aug-2004 06:51
using autocommit functionality to rollback transactions in a "workspace"
<?php
$conn = odbc_connection("$DSN","USER","PASS");
//turns off autocommit
odbc_autocommit($conn,FALSE);
$query1 = "some SQL";
$query2 = "some more SQL";
$ErrorCount = 0;
//if odbc_exec fails it will increment the $ErrorCount
$result = odbc_exec($conn,$query1) or $ErrorCount++;
$result2 = odbc_exec($conn,$query2) or $ErrorCount++;
//checking for errors, commit if none, rollback else
if ($Errorcount == 0){
odbc_commit($conn);
echo "transaction successful";
}
else{
odbc_rollback($conn);
echo "there were errors processing the transaction.
No changes were made to the database";
}
odbc_close($conn);
?>
Cheers,
Ron
26-May-2004 04:01
It seems that example made by andrea dot galli at acotel dot com works exactly the contrary.
It sets autocommit OFF and NOT ON like it's written inside note!
25-Jun-2003 08:30
If a transaction is started (autocommit disabled) while there is an active result id on the connection, odbc_autocommit will post a warning (Cannot set autocommit). Use odbc_free_result to clear the result id's or start the transaction before you execute the SQL.
28-Apr-2003 04:48
Example: set autocommit on
<?php
$Link_ID = odbc_connect("DSN", "user", "pass");
$Return = odbc_autocommit($Link_ID, FALSE);
?>
08-Oct-2001 10:09
When used in a odbc_fetch loop your selected resultset is lost and loop ends.
