PDO連線資料庫
上一篇文章為您介紹了“PHP資料庫如何使用PDO連線資料庫?”在PHP中,為您詳細地介紹瞭如何通過PDO連線資料庫,這篇文章讓您繼續瞭解PHP中如何使用PDO執行SQL語句。但願能幫到你!
前幾篇文章中,我們瞭解了PHP如何通過PDO連線資料庫,如何只需執行SQL語句才能連線資料庫。對於PDO,有三種方法可以用來執行SQL語句:exec()方法,query()方法,以及prepare()和execute()方法。那麼下面我們就一起去看看。
exec()方法。
當執行這些SQL語句,如INSERT、UPDATE和DELETE時,我們可以使用PDO物件中的exec()方法,使用PDO物件的exec(),使用該方法成功執行後,返回的結果是受影響的行數,
exec()方法的語法格式如下:
1
PDO::exec(字串$sql)
特別說明:
$sql為SQL語句執行。
exec()方法並沒有從SELECT查詢語句獲得對應的結果。
下面,我們嘗試通過例項向資料庫新增一條資料,比如下面:
$dsn='mysql:host=127.0.0.1;dbname=test';
$user='root';
$pwd='root';
try{
$pdo=newPDO($dsn,$user);
$sql="insertintouser(name,age,sex)values('values','21','男性')";
$res=$pdo->exec($sql);
if($res)echo'成功添加了'.$res.'條資料!';
}catch(PDOException$e){
echo'資料庫連線失敗:'.$e->getMessage();
}
?>
輸出結果:
從上面的例子可以看到,我們已經通過exec()方法成功地將一條資料新增到資料庫,而返回的結果是接收到影響的行的數量。如果要返回一個物件,可以使用query()方法,下面我們來看看另一種執行SQL語句的方法:query()方法。
query()方法。
通過exec()方法,在上面的案例中可以返回這些不需要返回結果集的語句資訊,而在執行SELECT查詢語句時,我們需要通過query()語句。如果這個方法成功地實施,反悔家國家就是PDOStatement物件。
如果使用query()方法,並且希望知道得到的總行數,你可以使用rowCount()方法來獲得PDOStatement物件。
方法的語法格式如下(query):
PDO::查詢(字串$sql)
PDO::query(string$sql,int$PDO::FETCH_COLUMN)
字串$sql、int$PDO::FETCH_CLASS、string$classname、array$ctorargs)
PDO::query(string$sql,int$PDO::FETCH_INTO)
這些注意事項包括:
$sql為要執行的SQL語句;其餘的引數用於設定語句的預設獲取模式,與呼叫結果物件PDOStatement::setFetchMode()相同。
然後,我們將使用query()方法來查詢前面新增的資料,比如下面:
$dsn='mysql:host=127.0.0.1;dbname=test';
$user='root';
$pwd='root';
try{
$pdo=newPDO($dsn,$user);
$sql="SELECT*FROMuserWHEREname='壹壹';
$res=$pdo->query($sql,PDO::FETCH_ASSOC);
print_r($res);
}catch(PDOException$e){
echo'資料庫連線失敗:'.$e->getMessage();
}
?>
輸出結果:
這些方法中,使用query()和exec()有一些需要注意的地方:
query()和exec()都能執行所有SQL語句,只返回不同的值;
query()能完成所有exec()的功能;
對exec()應用select語句時,始終返回0;
若要檢視具體查詢結果,可通過foreach語句進行迴圈輸出。
prepare()和execute()方法。
使用預處理語句的方法可以使實現更加高效,當有必要對傳入不同引數進行迭代時,這就是這一點。如果使用PDOStatement物件中的execute()方法,使用PDOStatement物件中的execute()方法,準備將要執行的查詢。然後,我們將看到prepare()和execute()方法。
prepare()方法有以下語法格式:
1
prepare(string$statement[,array$driver_options=array)
這些注意事項包括:
$statement表示必須是一個對目標資料庫有效的SQL語句模板;
$driver_options表示為可選引數,是一個包含一個或多個關鍵值對的陣列型別,設定返回的PDOStatement物件的屬性。
execute()方法有以下語法格式:
1
PDOStatement::執行(array$input_parameters]
這些注意事項包括:
$input_parameters在要執行的SQL語句中,只有一個元素的數目與繫結在SQL語句中的引數數量相同。
SQL語句模板中可包含零個或多個佔位標記,可以採用命名(:name)或問號(?)格式在其執行時,將以實際資料代替形式。
相同的SQL語句中,不能同時使用命名和問號形式,只能選擇其中一個引數形式。若以佔位標籤命名,則標記名稱必須是唯一的。
下一步,我們來看看使用已命名的引數佔位符,查詢指定的SQL語句,比如下面:
1
$dsn='mysql:host=127.0.0.1;dbname=test';
$user='root';
$pwd='root';
try{
$pdo=newPDO($dsn,$user);
$sql="SELECTname,age,sexFROMuserWHEREage=:age";
$sth=$pdo>prepare($sql);
$sth->execute([':age'=>11]);
$res1=$sth->fetchAll();
$sth->execute(array(':age'=>14));
$res2=$sth->fetchAll();
echo'
';
print_r($res1);
print_r($res2);
}catch(PDOException$e){
echo'資料庫連線失敗:'.$e->getMessage();
}
?>
輸出結果:
上面的例子使用了引數佔位符的命名形式,查詢指定的SQL語句,下一步我們來看看使用問號形式的引數佔位符,查詢指定的SQL語句。
示例如下:
$dsn='mysql:host=127.0.0.1;dbname=test';
$user='root';
$pwd='root';
try{
$pdo=newPDO($dsn,$user);
$sql="SELECTname,age,sexFROMuserWHEREage=?ANDsex=?";
$sth=