odbc_autocommit()
(PHP 4, PHP 5, PHP 7)
Toggle autocommit behaviour
说明
odbc_autocommit(resource $connection_id[,bool $OnOff= FALSE
]): mixed
Toggles autocommit behaviour.
By default, auto-commit is on for a connection. Disabling auto-commit is equivalent with starting a transaction.
参数
- $connection_id
ODBC 连接标识符,详见odbc_connect()。
- $OnOff
If$OnOffis
TRUE
, auto-commit is enabled, if it isFALSE
auto-commit is disabled.
返回值
Without the$OnOffparameter, this function returns auto-commit status for$connection_id. Non-zero is returned if auto-commit is on, 0 if it is off, or FALSE
if an error occurs.
If$OnOffis set, this function returns TRUE
on success and FALSE
on failure.
参见
odbc_commit()
Commit an ODBC transactionodbc_rollback()
Rollback a transaction
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!
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.
When used in a odbc_fetch loop your selected resultset is lost and loop ends.
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.
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.
Example: set autocommit on <?php $Link_ID = odbc_connect("DSN", "user", "pass"); $Return = odbc_autocommit($Link_ID, FALSE); ?>