Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.php > #1847

Re: database access

From sheldonlg <sheldonlg@thevillages.net>
Newsgroups comp.lang.php
Subject Re: database access
Date 2011-05-26 08:09 -0400
Organization A noiseless patient Spider
Message-ID <irlfu3$3nk$1@dont-email.me> (permalink)
References <7ded58f7-d089-4a1e-ba94-38183b0ec851@z37g2000vbl.googlegroups.com> <irjspv$iap$1@dont-email.me>

Show all headers | View raw


On 5/25/2011 5:37 PM, Jerry Stuckle wrote:
> On 5/25/2011 1:17 PM, Jivanmukta wrote:
>> I new relatively new to PHP. I need your opinion if the following set
>> of database functions make sense:
>>
>> function openDatabase() {
>> global $db;
>> try {
>> $db = new PDO('mysql:host=' . MYSQL_SERVER . ';dbname=' .
>> MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD);
>> $db->exec('SET NAMES latin2');
>> $db->exec('SET CHARACTER SET latin2 COLLATE latin2_general_ci');
>> $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
>> register_shutdown_function('closeDatabase');
>> } catch (PDOException $e) {
>> return false;
>> }
>> return true;
>> }
>>
>> function closeDatabase() {
>> global $db, $inTransaction;
>> if ($inTransaction) {
>> $db->rollBack();
>> $inTransaction = false;
>> }
>> if (!is_null($db)) {
>> $db = null;
>> }
>> }
>>
>> function queryDatabase($sql) {
>> global $db, $inTransaction;
>> $result = array();
>> try {
>> $qry = $db->query($sql);
>> if (!empty($qry)) {
>> $result = $qry->fetchAll();
>> }
>> } catch (PDOException $e) {
>> if ($inTransaction) {
>> $db->rollBack();
>> }
>> error(ERRMSG_DATABASE_OPERATION_FAILED);
>> }
>> return $result;
>> }
>>
>> function execDatabase($sql) {
>> global $db, $inTransaction;
>> $result = array();
>> try {
>> $result = $db->exec($sql);
>> } catch (PDOException $e) {
>> if ($inTransaction) {
>> $db->rollBack();
>> }
>> error(ERRMSG_DATABASE_OPERATION_FAILED);
>> }
>> return $result;
>> }
>>
>> function startTransaction() {
>> global $db, $inTransaction;
>> $db->beginTransaction();
>> $inTransaction = true;
>> }
>>
>> function commitTransaction() {
>> global $db, $inTransaction;
>> $inTransaction = false;
>> if ($db->commit()) {
>> return;
>> }
>> $db->rollBack();
>> error(ERRMSG_DATABASE_OPERATION_FAILED);
>> }
>>
>> function rollbackTransaction() {
>> global $db, $inTransaction;
>> $inTransaction = false;
>> if ($db->rollBack()) {
>> return;
>> }
>> error(ERRMSG_DATABASE_OPERATION_FAILED);
>> }
>>
>> function lockTables($tables) {
>> return execDatabase('LOCK TABLES ' . join(' WRITE, ', $tables) . '
>> WRITE');
>> }
>>
>> function unlockTables() {
>> return execDatabase('UNLOCK TABLES');
>> }
>
> Kind of, and maybe a bit overkill. But personally I'd put it all in a
> Database class. The code would be more flexible and less prone to errors.
>

Further, I would not have globals.  I would pass $db in via the 
constructor. Likewise, I would have $inTransaction be a class variable 
which gets set by the method startTransaction().

-- 
Shelly

Back to comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

database access Jivanmukta <jivanmukta@poczta.onet.pl> - 2011-05-25 10:17 -0700
  Re: database access Jerry Stuckle <jstucklex@attglobal.net> - 2011-05-25 17:37 -0400
    Re: database access sheldonlg <sheldonlg@thevillages.net> - 2011-05-26 08:09 -0400
      Re: database access Jerry Stuckle <jstucklex@attglobal.net> - 2011-05-26 09:00 -0400
        Re: database access sheldonlg <sheldonlg@thevillages.net> - 2011-05-26 10:22 -0400
          Re: database access Jerry Stuckle <jstucklex@attglobal.net> - 2011-05-26 11:41 -0400
            Re: database access sheldonlg <sheldonlg@thevillages.net> - 2011-05-26 12:07 -0400
              Re: database access sheldonlg <sheldonlg@thevillages.net> - 2011-05-26 12:14 -0400
    Re: database access sophal chao <w3cyberlearning@gmail.com> - 2011-05-29 13:41 -0700
      Re: database access Jerry Stuckle <jstucklex@attglobal.net> - 2011-05-29 23:12 -0400
  Re: database access JohnT <john@example.com> - 2011-05-26 13:05 +0000
    Re: database access Jivanmukta <jivanmukta@poczta.onet.pl> - 2011-05-26 06:37 -0700
      Re: database access sheldonlg <sheldonlg@thevillages.net> - 2011-05-26 10:30 -0400
        Re: database access sheldonlg <sheldonlg@thevillages.net> - 2011-05-26 10:33 -0400
      Re: database access Jerry Stuckle <jstucklex@attglobal.net> - 2011-05-26 11:43 -0400
    Re: database access Michael Fesser <netizen@gmx.de> - 2011-05-26 19:48 +0200
      Re: database access Erwin Moller <Since_humans_read_this_I_am_spammed_too_much@spamyourself.com> - 2011-05-30 10:56 +0200

csiph-web