Operácie s databázou pomocou Typo3 funkcií
Príkazy
sql | vykonanie sql príkazu, |
sql_query | vykonanie sql príkazu, |
exec_SELECTquery | výber záznamov, |
exec_INSERTquery | vloženie záznamu, |
sql_insert_id | číslo posledného vloženého záznamu, |
exec_UPDATEquery | úprava záznamov, |
sql_affected_rows | počet upravených záznamov, |
sql_num_rows | vráti počet riadkov vo výsledku výberu |
sql_fetch_assoc | vráti jeden riadok výsledku vykonaného dotazu |
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
- pripojenie k databáze (sql_pconnect)
- vyber databázy (sql_select_db)
- 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;
}
Generátor typoscriptu
Vytvára typoscript pre bežné použitie. Generátor je jednoduchý na obsluhu, stačí vyplniť zopár položiek formulára.