note 76990 deleted from function.mysql-affected-rows by philip
| From: | philip@php.net | Date: | Fri, 04 Sep 2015 21:45:04 +0000 |
| Subject: | note 76990 deleted from function.mysql-affected-rows by philip | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-203691@lists.php.net to get a copy of this message | ||
Note Submitter: EToS
----
i found a pretty nice way, this db class/function will accept an array of arrays of querys, it will
auto check every line for affected rows in db, if one is 0 it will rollback and return false, else
it will commit and return true, the call to the function is simple and is easy to read etc
----------
<?php
class MySQLDB
{
private $connection; // The MySQL database connection
/* Class constructor */
function MySQLDB(){
/* Make connection to database */
$this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());
}
/* Transactions functions */
function begin(){
$null = mysql_query("START TRANSACTION", $this->connection);
return mysql_query("BEGIN", $this->connection);
}
function commit(){
return mysql_query("COMMIT", $this->connection);
}
function rollback(){
return mysql_query("ROLLBACK", $this->connection);
}
function transaction($q_array){
$retval = 1;
$this->begin();
foreach($q_array as $qa){
$result = mysql_query($qa['query'], $this->connection);
if(mysql_affected_rows() == 0){ $retval = 0; }
}
if($retval == 0){
$this->rollback();
return false;
}else{
$this->commit();
return true;
}
}
};
/* Create database connection object */
$database = new MySQLDB;
// then from anywhere else simply put the transaction queries in an array or arrays like this:
function function(){
global $database;
$q = array (
array("query" => "UPDATE table WHERE something =
'something'"),
array("query" => "UPDATE table WHERE something_else =
'something_else'"),
array("query" => "DELETE FROM table WHERE something_else2 =
'something_else2'"),
);
$database->transaction($q);
}
?>