国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

解讀五個常見PHP數據庫問題

2024-05-04 21:52:10
字體:
來源:轉載
供稿:網友

揭露 PHP 應用程序中出現的五個常見數據庫問題 —— 包括數據庫模式設計、數據庫訪問和使用數據庫的業務邏輯代碼 —— 以及它們的解決方案。

  如果只有一種 方式使用數據庫是正確的……

  您可以用很多的方式創建數據庫設計、數據庫訪問和基于數據庫的 PHP 業務邏輯代碼,但最終一般以錯誤告終。本文說明了數據庫設計和訪問數據庫的 PHP 代碼中出現的五個常見問題,以及在遇到這些問題時如何修復它們。

  問題 1:直接使用 MySQL

  一個常見問題是較老的 PHP 代碼直接使用 mysql_ 函數來訪問數據庫。清單 1 展示了如何直接訪問數據庫。

<?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 函數來訪問數據庫。還要注意查詢,其中使用字符串連接來向查詢添加 $name 參數。

  該技術有兩個很好的替代方案:PEAR DB 模塊和 PHP Data Objects (PDO) 類。兩者都從特定數據庫選擇提供抽象。因此,您的代碼無需太多調整就可以在 IBM® DB2®、MySQL、PostgreSQL 或者您想要連接到的任何其他數據庫上運行。

  使用 PEAR DB 模塊和 PDO 抽象層的另一個價值在于您可以在 SQL 語句中使用 ? 操作符。這樣做可使 SQL 更加易于維護,且可使您的應用程序免受 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' ) );
?>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐池县| 安庆市| 涟水县| 银川市| 舒城县| 张家港市| 泾阳县| 云龙县| 汝南县| 仲巴县| 申扎县| 玉树县| 大荔县| 平阴县| 南川市| 甘洛县| 刚察县| 夹江县| 廊坊市| 营口市| 旅游| 台州市| 长宁区| 静乐县| 灵武市| 茶陵县| 洛扎县| 塔河县| 吉隆县| 广东省| 通山县| 平阴县| 沂南县| 广宁县| 盐池县| 阳曲县| 新郑市| 衡阳县| 淄博市| 青浦区| 佳木斯市|