pdo中幾種查詢方式的區別

2021-07-13 10:11:45 字數 1438 閱讀 2624

(1)exec

php手冊中對其的描述是:執行一條 sql 語句,並返回受影響的行數。

從中可以看出,execute可應用於「增刪改查」中的增刪改。因為查詢操作會返回乙個結果集,而exec函式只能返回受影響的函式。

(2)query

對應於「增刪改查」中的「查」。用於執行一次的sql語句,返回乙個pdostatement結果集。此結果可認為是多維陣列,可以直接使用。

(3)prepare

對於重複執行的語句,可以使用prepare作預處理(優化)。因為每次的查詢語句執行之前都需要編譯,通過prepare之後,可節省重複編譯查詢語句的開銷。先prepare再execute。此時返回乙個pdostatement結果集,pdostatement是乙個物件,可以使用它的成員方法來處理結果集。視結果集型別的不同,也可直接將其作為多維陣列使用。

如果prepare傳入的sql語句是可變的話,可以通過bindparam來為其繫結引數,然後execute。

ps:prepare+execute的組合,可以適用於於「增刪改查」所有的操作。

下面來看具體的使用例子:

<?php

$dsn = "mysql:dbname=pdo;host=localhost";

$user = "root";

$password = "root";

$dbh = new pdo($dsn, $user, $password);

$dbh->setattribute(pdo::attr_errmode, pdo::errmode_exception);

//使用exec進行增刪改

$sqlcmd = "insert into userinfo values (rand(),rand())";

$dbh->exec($sqlcmd);

//使用query進行查詢操作

$sqlcmd = "select * from userinfo";

try

}catch (pdoexception $e)

//prepare先預處理,然後繫結引數,然後execute

$sqlcmd = 'select password from userinfo where username = :pname';

$res = $dbh->prepare($sqlcmd);

$puser_name = "aaa";

$res->bindparam(':pname', $puser_name, pdo::param_str, 200);

$res->execute();

foreach ($res as $row)

?>

這只是最基本的使用例子。一般來說,在具體的專案中都會使用乙個pdo封裝類,有的框架如zendframework還自帶了資料庫處理類。

pdo中DNS書寫方式

pdo中dns書寫方式 mssql host localhost dbname testdb sybase host localhost dbname testdb dblib host localhost dbname testdb firebird user john password mypa...

關於關聯查詢的幾種方式與區別

表a a id a num 1 a111 2 a222 3 a333 4 a444 5 a555 表bb id b num 1 b111 2 b222 3 b333 4 b444 6 b666 1.左連線 主表 left join 關聯表 on 關聯條件 舉例select from a left j...

SQL查詢的幾種方式

1 左連線 left join 或者 left outer join 2 左連線 table a表資料全部顯示,table b根據條件匹配table a 匹配上顯示,否則顯示null 3 select from table a 4 select from table b 5 select from ...