(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 ...