在之前的文章中為大家帶來了《PHP資料庫學習之怎樣使用PDO連接資料庫? 》,其中給大家詳細的介紹了在PHP中怎麼透過PDO來連接資料庫,這篇文章我們繼續來看看PHP怎麼使用PDO執行SQL語句。希望對大家有幫助!
在之前的文章中我們已經學習到了PHP怎麼透過PDO來連接到資料庫,連接到資料庫那就得執行SQL語句。在PDO 中,我們可以使用三種方式來執行SQL 語句,分別是 exec()
方法,query()
方法,以及預處理語句 prepare()
和execute()
方法。那接下來我們一起來看看吧。
<strong><span style="font-size: 20px;">exec() </span></strong>
#方法
在我們執行 INSERT 、UPDATE 和DELETE 等這些不需要傳回結果集的SQL語句的時候,我們就可以使用PDO物件中的 exec()
方法,使用這個方法成功執行之後,傳回的結果是受到影響的行數,
exec() 方法的語法格式如下:
PDO::exec(string $sql)
要注意的是:
##$ sql 為要執行的SQL 語句。
exec() 方法不會從 SELECT 查詢語句中取得對應的結果。
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "insert into user(name,age,sex) values('壹壹','21','男')"; $res = $pdo -> exec($sql); if($res) echo '成功添加 '.$res.' 条数据!'; }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>輸出結果:
query() 方法。
<strong>query() <span style="font-size: 20px;"></span></strong>
#方法
exec()方法能夠傳回這些不需要傳回結果集的語句訊息,當執行需要傳回結果集的 SELECT 查詢語句時,我們就需要透過query()語句。透過該方法執行成功的話,反悔的家國是一個
PDOStatement 物件。
rowCount() 方法取得。
PDO::query(string $sql) PDO::query(string $sql, int $PDO::FETCH_COLUMN, int $colno) PDO::query(string $sql, int $PDO::FETCH_CLASS, string $classname, array $ctorargs) PDO::query(string $sql, int $PDO::FETCH_INTO, object $object)其中需要注意的是:
$sql 為要執行的SQL 語句;其餘的參數用來為語句設定預設的取得模式,相當於呼叫結果物件PDOStatement::setFetchMode() 方法。
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "SELECT * FROM user WHERE name='壹壹'"; $res = $pdo -> query($sql,PDO::FETCH_ASSOC); print_r($res); }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>輸出結果:
query() 和
exec() 方法有以下幾點要注意:
<strong>prepare()<span style="font-size: 20px;"></span></strong>
# 和execute() 方法
prepare() 方法去準備一個要執行的查詢,再使用PDOStatement 物件中的
execute() 方法來執行。那接下來我們就來看看
prepare() 和
execute() 方法。
PDO::prepare(string $statement[, array $driver_options = array()])其中要注意的是:
$statement 表示的是必須是對目標資料庫有效的SQL 語句範本;
$driver_options 表示為選用參數,是陣列型別的選用參數,包含一個或多個鍵值對,為傳回的PDOStatement 物件設定屬性。
PDOStatement::execute([array $input_parameters])其中需要注意的是:
参数 $input_parameters
为一个元素个数和将被执行的 SQL 语句中绑定的参数一样多的数组。
SQL 语句模板中可以包含零个或多个参数占位标记,格式可以是命名(:name)或问号(?)的形式,当它执行时将用真实数据取代。
在同一个 SQL 语句里,命名和问号形式不能同时使用,只能选择其中一种参数形式。如果使用命名形式的占位标记,那么标记的命名必须是唯一的。
接下来我们看一下使用命名形式的参数占位符,查询指定的 SQL 语句,示例如下:
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "SELECT name,age,sex FROM user WHERE age = :age"; $sth = $pdo -> prepare($sql); $sth -> execute([':age'=>11]); $res1 = $sth -> fetchAll(); $sth -> execute(array(':age'=>14)); $res2 = $sth -> fetchAll(); echo '<pre class="brush:php;toolbar:false">'; print_r($res1); print_r($res2); }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>
输出结果:
上述示例是使用命名形式的参数占位符,查询指定的 SQL 语句,接下来我们看一下使用问号形式的参数占位符,查询指定的 SQL 语句。示例如下:
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "SELECT name,age,sex FROM user WHERE age = ? AND sex = ?"; $sth = $pdo -> prepare($sql); $sth -> execute([12,'男']); $res1 = $sth -> fetchAll(); $sth -> execute(array(11,'女')); $res2 = $sth -> fetchAll(); echo '<pre class="brush:php;toolbar:false">'; print_r($res1); print_r($res2); }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>
输出结果:
由此我们便通过使用问号形式的参数占位符,查询指定的 SQL 语句。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
以上是PHP資料庫學習如何使用PDO執行SQL語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!