Zjednodušenie práce s databázou
include 'include/db.php'; $query = "select usr_id, usr_name from user "; $query.= "where usr_login='{login}' and usr_status='{status}'"; $result = db_query($query, array( 'login' => 'fero', 'status' => 1, )); if ($obj = db_fetch_object($result)) { echo htmlspecialchars($obj->usr_name); }
Ako prvé si všimnite, že som nikde nevytváral pripojenie k databáze.
O to sa postará knižnica. Keď sa bližšie pozriete na sql dotaz, tak
v ňom objavíte vzor. Vzor je akýkoľvek reťazec, ktorý je obalený do krútených zátvoriek.
Vzor napíšeme všade tam, kde by sme inak dosadzovali nejakú premennú.
Previazanie premennej so vzorom urobí funkcia db_query.
Pri tomto previazaní sa taktiež automaticky všetky premenné budú escapovať.
Už sa o to nemusíte starať ručne. A to je viac-menej všetko k jej použitiu:)
Aby sa knižnica vedela pripojiť k databáze, potrebuje mať k tomu informácie.
Predpokladá, že ich nájde v súbore etc/config.php. Pokiaľ
dôjde k volaniu funkcie db_query a neexistuje pripojenie k
databáze, tak si ho funkcia vytvorí a uloží v statickej premennej (aby sa
nemusela otvárať samostatná konexia pre každý dotaz). Okrem vytvorenia
konexie funkcia ešte previaže vzory s premennými, ktoré najskôr
spacifikuje oescapovaním nebezpečných znakov. A nakoniec už len vykoná
dotaz na databázu.
<?php /* vim:set shiftwidth=4 tabstop=4 expandtab: */ ###################################################################### ###################################################################### if (!defined("__DB_PHP__")) { define("__DB_PHP__", 1); ###################################################################### if (!defined(DB_HOST)) { define(DB_HOST, 'localhost'); } if (!defined(DB_USER)) { define(DB_USER, 'user'); } if (!defined(DB_PASSWD)) { define(DB_PASSWD, 'passwd'); } if (!defined(DB_DB)) { define(DB_DB, 'db'); } ###################################################################### ###################################################################### function db_query($_query, $_params = null) { # {{{ static $connection = null; if (is_null($connection)) { $connection = mysql_connect(DB_HOST, DB_USER, DB_PASSWD); mysql_select_db(DB_DB); #mysql_query("SET character_set_client=utf8"); #mysql_query("SET character_set_connection=utf8"); #mysql_query("SET character_set_results=utf8"); } if (is_array($_params)) { foreach ($_params as $name => $value) { if (get_magic_quotes_gpc()) { $value = stripslashes($value); } $_query = str_replace('{'.$name.'}', mysql_real_escape_string($value), $_query); } } if (defined('DEBUG_MODE') && DEBUG_MODE) { fb($_query, "query", FirePHP::TRACE); } $result = mysql_query($_query); if (!$result) { echo "<div style='color: red;'>".mysql_error()."</div>"; #echo "<pre>$_query</pre>"; } return $result; # }}} } ###################################################################### function db_fetch_object($_result) { # {{{ if (!$_result) { return false; } return mysql_fetch_object($_result); # }}} } ###################################################################### function db_last_id() { # {{{ return mysql_insert_id(); # }}} } ###################################################################### } ######################################################################
Ako vidíte, knižnica nie je objektová, ale dá len minimum úsilia ju na objektovú prepísať.
Ani vás nebaví vypisovať
Zatiaľ nie sú žiadne komentáre.