解讀五個常見PHP數(shù)據(jù)庫問題_PHP教程
推薦:解讀PHP版單點(diǎn)登陸實(shí)現(xiàn)方案摘要: 本文主要介紹了利用webservice,session,cookie技術(shù),來進(jìn)行通用的單點(diǎn)登錄系統(tǒng)的分析與設(shè)計。具體實(shí)現(xiàn)語言為PHP。單點(diǎn)登錄,英文名為Single Sign On,簡稱為 SSO,是目前企業(yè),網(wǎng)絡(luò)業(yè)務(wù)的用戶綜合處理的重要組成部分。而SSO的定義,是在多個應(yīng)用系統(tǒng)
揭露 PHP 應(yīng)用程序中出現(xiàn)的五個常見數(shù)據(jù)庫問題 —— 包括數(shù)據(jù)庫模式設(shè)計、數(shù)據(jù)庫訪問和使用數(shù)據(jù)庫的業(yè)務(wù)邏輯代碼 —— 以及它們的解決方案。
如果只有一種 方式使用數(shù)據(jù)庫是正確的……
您可以用很多的方式創(chuàng)建數(shù)據(jù)庫設(shè)計、數(shù)據(jù)庫訪問和基于數(shù)據(jù)庫的 PHP 業(yè)務(wù)邏輯代碼,但最終一般以錯誤告終。本文說明了數(shù)據(jù)庫設(shè)計和訪問數(shù)據(jù)庫的 PHP 代碼中出現(xiàn)的五個常見問題,以及在遇到這些問題時如何修復(fù)它們。
問題 1:直接使用 MySQL
一個常見問題是較老的 PHP 代碼直接使用 mysql_ 函數(shù)來訪問數(shù)據(jù)庫。清單 1 展示了如何直接訪問數(shù)據(jù)庫。
<?php
function get_user_id( $name )
{
$db = mysql_connect( 'localhost', 'root', 'password' );
mysql_select_db( 'users' );
$res = mysql_query( "SELECT id FROM users WHERE login='".$name."'" );
while( $row = mysql_fetch_array( $res ) ) { $id = $row[0]; }
return $id;
}
var_dump( get_user_id( 'jack' ) );
?>
清單 1. Access/get.php
注意使用了 mysql_connect 函數(shù)來訪問數(shù)據(jù)庫。還要注意查詢,其中使用字符串連接來向查詢添加 $name 參數(shù)。
該技術(shù)有兩個很好的替代方案:PEAR DB 模塊和 PHP Data Objects (PDO) 類。兩者都從特定數(shù)據(jù)庫選擇提供抽象。因此,您的代碼無需太多調(diào)整就可以在 IBM® DB2®、MySQL、PostgreSQL 或者您想要連接到的任何其他數(shù)據(jù)庫上運(yùn)行。
使用 PEAR DB 模塊和 PDO 抽象層的另一個價值在于您可以在 SQL 語句中使用 ? 操作符。這樣做可使 SQL 更加易于維護(hù),且可使您的應(yīng)用程序免受 SQL 注入攻擊。
使用 PEAR DB 的替代代碼如下所示。
<?php
require_once("DB.php");
function get_user_id( $name )
{
$dsn = 'mysql://root:password@localhost/users';
$db =& DB::Connect( $dsn, array() );
if (PEAR::isError($db)) { die($db->getMessage()); }
$res = $db->query( 'SELECT id FROM users WHERE login=?',
array( $name ) );
$id = null;
while( $res->fetchInto( $row ) ) { $id = $row[0]; }
return $id;
}
var_dump( get_user_id( 'jack' ) );
?>
分享:詳解PHP分頁顯示制作所謂分頁顯示,也就是將數(shù)據(jù)庫中的結(jié)果集人為的分成一段一段的來顯示,這里需要兩個初始的參數(shù)每頁多少條記錄($PageSize)? 當(dāng)前是第幾頁($CurrentPageID)? 現(xiàn)在只要再給我一個結(jié)果集,我就可以顯示某段特定的結(jié)果出來。 至于其他的參數(shù),比如:上一頁
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時間
- PHP中獎概率的抽獎算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-解讀五個常見PHP數(shù)據(jù)庫問題。