Am_Db
aMember Pro utilizes DbSimple library for easy database access. We are using slightly modified version of the library, with addition of 6 functions:
- queryResultOnly($sql, $params=...) : return mysql query identifier (PDOStatement in our case) instead of fetched rows. Useful for long results
- queryQuick($sql) : runs query without any substitution and logging. Useful for long or blob inserts
- fetchRow(PDOStatement $st) - fetches assotiative array from query id returned by queryResultOnly()
- fetchArray(PDOStatement $st) - fetches numbered array from query id returned by queryResultOnly()
- freeResult(PDOStatement $st) - releases query id returned by queryResultOnly()
- getPrefix() - returns configured tables prefix (You usually do not need it, just add ?_ to SQL before the table name to add prefix)
How to access database object to run queries
Section titled “How to access database object to run queries”From any part of the program, you can run:
// get full user records$users = Am_Di::getInstance()->db->select("SELECT * FROM ?_user WHERE state=? LIMIT ?d", 'NY', 10);// or get only assotiative array user_id => login$idLogin = Am_Di::getInstance()->db->selectCol("SELECT user_id as ARRAY_KEY, login FROM ?_user WHERE country = 'US'");// there is also an unique ability to skip part of query on some condition// for example:$country = 'UK'; $state = null;$id = Am_Di::getInstance()->db->selectCell("SELECT user_id FROM ?_user WHERE country=? { AND state=? } LIMIT 1", $country, $state ? $state : DBSIMPLE_SKIP);// will run as "SELECT user_id FROM am_user WHERE country='UK' LIMIT 1// and if you pass value different from DBSIMPLE_SKIP constant this part of query will be inserted, say$country = 'US'; $state = 'CA';$id = Am_Di::getInstance()->db->selectCell("SELECT user_id FROM ?_user WHERE country=? { AND state=? } LIMIT 1", $country, $state ? $state : DBSIMPLE_SKIP);// will run as "SELECT user_id FROM am_user WHERE country='US' AND state='CA' LIMIT 1
// ? parameters are automatically escaped// ?d automatically converted to integer// ?a automatically converted to array, for example$arr = array('login' => "x'x", 'email' => 'x@x.x');Am_Di::getInstance()->db->query("UPDATE ?_user SET ?a", $arr);// will be automatically executed as "UPDATE am_user SET `login`='x\'x', `email`='x@x.x'"Copyright © 2002–2026 www.amember.com. All Rights Reserved.