Home >Backend Development >PHP Tutorial >Notes 004 PHP POD study notes 03
1. Connection establishment
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>
2. Connection error Process
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query(' SELECT * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage( ) . "
";
die();
}
?>
Close the connection
$dbh = new PDO('mysql:host =localhost;dbname=test', $user, $pass);
// Use the connection here
// Now the operation is completed, close the connection here $dbh = null; ?>
Transaction
Not every database supports transactions, so PDO needs to run in so-called "autocommit" mode when a connection is first opened. Autocommit mode means that each query run has its own implicit transaction if the database supports it, or none if the database does not support transactions. If a transaction is required, it must be started with the PDO::beginTransaction() method. If the underlying driver does not support transactions, a PDOException is thrown (this is a serious error condition regardless of error handling settings). Once a transaction is started, it can be completed with PDO::commit() or PDO::rollBack(), depending on whether the code in the transaction ran successfully.
When the script ends or the connection is about to be closed, if there is an unfinished transaction, PDO will automatically roll back the transaction. This safety measure helps avoid inconsistencies if the script terminates unexpectedly - if the transaction is not committed explicitly, it is assumed that something went wrong, so a rollback is performed to keep the data safe.
In the following example, assume that a set of entries is created for a new employee and assigned an ID of 23. In addition to registering the person's basic data, it is also necessary to record his salary. It's simple to do both updates separately, but by enclosing them in PDO::beginTransaction() and PDO::commit() calls, you ensure that no one else can see the changes until they are complete. If an error occurs, the catch block rolls back all changes that occurred since the transaction started and prints an error message.
try {
$dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
array(PDO::ATTR_PERSISTENT => true));
echo " Connectedn";
} catch (Exception $e) {
die("Unable to connect: " . $e->getMessage());
}
try {
$dbh->setAttribute(PDO:: ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->beginTransaction(); $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')" ); $dbh->exec("insert into salarychange (id, amount, changedate) values (23, 50000, NOW())"); $dbh->commit();
} catch (Exception $e ) { $dbh->rollBack(); echo "Failed: " . $e->getMessage(); } ?>
The above is the content of Note 004 PHP POD Study Note 03, please pay attention to more related content PHP Chinese website (www.php.cn)!