rtgx

Operácie s databázou pomocou Typo3 funkcií

Príkazy

sql

vykonanie sql príkazu,
($db, $query)

sql_query

vykonanie sql príkazu,
($query)

exec_SELECTquery

výber záznamov,
($select_fields, $from_table, $where_clause, $groupBy='', $orderBy='', $limit='')

exec_INSERTquery

vloženie záznamu,
($table, $fields_values, $no_quote_fields=FALSE)

sql_insert_id

číslo posledného vloženého záznamu,
bez parametrov

exec_UPDATEquery

úprava záznamov,
($table, $where, $fields_values, $no_quote_fields=FALSE)

sql_affected_rows

počet upravených záznamov,
bez parametrov

sql_num_rows

vráti počet riadkov vo výsledku výberu
($res)

sql_fetch_assoc

vráti jeden riadok výsledku vykonaného dotazu
($res)

Príklad výberu záznamov

$query = 'SELECT uid, title FROM pages WHERE pid = 4 ORDER BY sorting LIMIT 5';
$res = $GLOBALS['TYPO3_DB']->sql( TYPO3_db, $query );
echo 'Num rows: '.$GLOBALS['TYPO3_DB']->sql_num_rows( $res );
while( $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc( $res ) ) {
echo $row['uid'].'. '.$row['title'];
}

Výsledok

Num rows: 5

98.

Systémové požiadavky

9.

Typoscript

21.

Tsconfig

8.

Extensions

7.

Manuály

Komplexnejší príklad s pripojením k DB

  1. pripojenie k databáze (sql_pconnect)
  2. vyber databázy (sql_select_db)
  3. výber užívateľa z tabuľky fe_users podľa parametra uid (exec_SELECTquery, sql_fetch_assoc)
class tx_extension_config {

var $user_db_host = 'localhost';
var $user_db_username = 'username';
var $user_db_password = 'password';
var $user_db = 'database_name';
var $user;

/**
* Get FE user data from DB with connection
*
* @param int
* @return bool
*/
private function getFeuserData( $uid ) {

// Construct class
$dbuser = t3lib_div::makeInstance( 't3lib_DB' );
// Connect to database
$dbuser->sql_pconnect( $this->user_db_host, $this->user_db_username, $this->user_db_password );
if( $dbuser->link ) {
// Select database
$dbuser->sql_select_db( $this->user_db );
$res = $dbuser->exec_SELECTquery( '*', 'fe_users', 'uid='.intval( $uid ) );
if( $res ) {
$this->user = $dbuser->sql_fetch_assoc( $res );
return TRUE;
}
}
return FALSE;
}
}

Výber z DB - exec_SELECTquery

Výber užívateľa z tabuľky fe_users použitím funkcie exec_SELECTquery:

	/**
* Basic class configuration
*
* @return
*/
function init() {

global $TYPO3_DB;
$this->db = &$TYPO3_DB;
}

/**
* Select FE user by uid
*
* @param int $uid: FE user uid
* @return int return: FE user object array or false
*/
function getFeusersByUid( $uid ) {

$where = 'deleted = 0 AND uid = '.intval( $uid );
$res = $this->db->exec_SELECTquery( '*', 'fe_users', $where, '', '', '' );
if( $res ) {
$this->feuser = $this->db->sql_fetch_assoc( $res );
return $this->feuser;
}
return false;
}

Databáza vloženie - exec_INSERTquery, sql_insert_id

Vloží do tabuľky fe_users nový záznam, username je nastavené podľa emailu, password (heslo) je generované náhodne.

	/**
* Insert FE user into fe_users table
*
* @param array $conf: configuration array, inserted fields
* @return int return: uid of iserted FE user or false
*/
function insertFeuser( &$conf ) {

// Prepare values
$conf['tstamp'] = time();
$conf['crdate'] = $conf['tstamp'];
$conf['disable'] = 1;
$conf['username'] = $conf['email'];
// Prepare random password
$conf['password'] = substr( str_shuffle( '0123456789' ), 0, 6 ) ;

// Isert record and return record id, if insert begin OK
$res = $this->db->exec_INSERTquery( 'fe_users', $conf );
$id = $this->db->sql_insert_id();
if( $res && $id > 0 )
return $id;
return false;
}

DB úprava - exec_UPDATEquery, sql_affected_rows

Úprava záznamu vo fe_users.

	/**
* Update FE user record
*
* @param int $uid: fe user uid
* @param array $conf: configuration array
* @return int return: uid of iserted FE user or false
*/
function updateFeuser( $uid, &$conf ) {

// UID must be set
if( !( intval( $uid ) > 0 ) )
return false;

// Prepare values
$conf['tstamp'] = time();
$where = 'deleted = 0 AND uid = '.$uid;

// Update record and return true, if update begin OK
$res = $this->db->exec_UPDATEquery( 'fe_users', $where, $conf );
$rows = $this->db->sql_affected_rows();
if( $rows > 0 )
return true;
return false;
}