考慮2種方式查詢數據庫:PHP/SQL:框架查詢建築VS字符串連接
一個框架(Yii的):
$user = Yii::app()->db->createCommand()
->select('id, username, profile')
->from('tbl_user u')
->join('tbl_profile p', 'u.id=p.user_id')
->where('id=:id', array(':id'=>$id))
->queryRow();
隨着字符串連接(分離SQL語句的各個部分):
$columns = "id,username,profile"; // or =implode(",",$column_array);
//you can always use string functions to wrap quotes around each columns/tables
$join = "INNER JOIN tbl_profile p ON u.id=p.user_id";
$restraint = "WHERE id=$id ";//$id cleaned with intval()
$query="SELECT $columns FROM tbl_user u {$restraint}{$join}";
//use PDO to execute query... and loop through records...
實施例與字符串連接用於分頁:
$records_per_page=20;
$offset = 0;
if (isset($_GET['p'])) $offset = intval($_GET['p'])*$records_per_page;
Squery="SELECT * FROM table LIMIT $offset,$records_per_page";
哪種方法有更好的性能?
- PHP的PDO允許代碼可以移植到不同的數據庫
- 第二方法可被包裹在這樣沒有代碼被不斷重複的功能。
- 字符串連接允許編程的方式構建複雜的SQL語句(通過操縱字符串)
即使在Yii示例中,仍然會有幕後代碼將完全相同的字符串連接起來,並使用PDO或其他適配器將其發送到數據庫。所以性能問題是一種自我回答。 – deceze