note 76990 added to function.mysql-affected-rows
| From: | EToS at osu1 dot php dot net | Date: | Thu, 09 Aug 2007 08:57:12 +0000 |
| Subject: | note 76990 added to function.mysql-affected-rows | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-129366@lists.php.net to get a copy of this message | ||
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
----------
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);
}
----
Server IP: 194.145.210.3
Probable Submitter: 84.12.14.141
----
Manual Page -- http://www.php.net/manual/en/function.mysql-affected-rows.php
Edit -- https://master.php.net/note/edit/76990
Del: integrated -- https://master.php.net/note/delete/76990/integrated
Del: useless -- https://master.php.net/note/delete/76990/useless
Del: bad code -- https://master.php.net/note/delete/76990/bad+code
Del: spam -- https://master.php.net/note/delete/76990/spam
Del: non-english -- https://master.php.net/note/delete/76990/non-english
Del: in docs -- https://master.php.net/note/delete/76990/in+docs
Del: other reasons-- https://master.php.net/note/delete/76990
Reject -- https://master.php.net/note/reject/76990
Search -- https://master.php.net/manage/user-notes.php