首頁 >後端開發 >php教程 >PHP資料庫學習如何使用PDO執行SQL語句?

PHP資料庫學習如何使用PDO執行SQL語句?

WBOY
WBOY原創
2021-10-28 12:05:324123瀏覽

在之前的文章中為大家帶來了《PHP資料庫學習之怎樣使用PDO連接資料庫? 》,其中給大家詳細的介紹了在PHP中怎麼透過PDO來連接資料庫,這篇文章我們繼續來看看PHP怎麼使用PDO執行SQL語句。希望對大家有幫助!

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  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try{
        $pdo = new PDO($dsn,$user,$pwd);
        $sql = "insert into user(name,age,sex) values(&#39;壹壹&#39;,&#39;21&#39;,&#39;男&#39;)";
        $res = $pdo -> exec($sql);
        if($res) echo &#39;成功添加 &#39;.$res.&#39; 条数据!&#39;;
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>

輸出結果:


PHP資料庫學習如何使用PDO執行SQL語句?

#由上述範例可以看出,我們透過exec()方法成功的向資料庫中加入了一條數據,並且傳回的結果是收到影響的行數。想要回傳一個物件的話就可以透過query() 方法,接下來我們來看另一種執行SQL語句的方式:

query() 方法。

<strong>query() <span style="font-size: 20px;"></span></strong>#方法

在上述範例中透過

exec()方法能夠傳回這些不需要傳回結果集的語句訊息,當執行需要傳回結果集的 SELECT 查詢語句時,我們就需要透過query()語句。透過該方法執行成功的話,反悔的家國是一個PDOStatement 物件。

如果使用了query() 方法,並想了解取得的資料行總數,可以使用 PDOStatement 物件中的

rowCount() 方法取得。

query()方法的語法格式如下:


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() 方法。

那接下來我們透過query()方法來查詢我們前面新增的那條數據,範例如下:


<?php
    $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try{
        $pdo = new PDO($dsn,$user,$pwd);
        $sql = "SELECT * FROM user WHERE name=&#39;壹壹&#39;";
        $res = $pdo -> query($sql,PDO::FETCH_ASSOC);
        print_r($res);
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>

輸出結果:


PHP資料庫學習如何使用PDO執行SQL語句?

其中使用

query() exec() 方法有以下幾點要注意:

  • query() 和exec() 都可以執行所有的SQL 語句,只是傳回值不同而已;

  • query() 可以實作所有exec() 的功能;

  • 當把select 語句應用到exec() 時,總是回傳0;

  • 如果要看查詢的具體結果,可以透過foreach 語句完成迴圈輸出。

<strong>prepare()<span style="font-size: 20px;"></span></strong># 和execute() 方法

當有需要迭代傳入不同參數的時候,也就是方同一個查詢需要多次執行的時候,使用預處理語句的方式會讓實作效率更高,使用預處理語句就需要用到PDO物件中的 

prepare() 方法去準備一個要執行的查詢,再使用PDOStatement 物件中的 execute() 方法來執行。那接下來我們就來看看prepare() execute() 方法。

prepare() 方法的語法格式如下:

PDO::prepare(string $statement[, array $driver_options = array()])

其中要注意的是:

  • $statement   表示的是必須是對目標資料庫有效的SQL 語句範本;

  • $driver_options   表示為選用參數,是陣列型別的選用參數,包含一個或多個鍵值對,為傳回的PDOStatement 物件設定屬性。

execute() 方法的語法格式如下:

PDOStatement::execute([array $input_parameters])

其中需要注意的是:

  • 参数 $input_parameters 为一个元素个数和将被执行的 SQL 语句中绑定的参数一样多的数组。

  • SQL 语句模板中可以包含零个或多个参数占位标记,格式可以是命名(:name)或问号(?)的形式,当它执行时将用真实数据取代。

  • 在同一个 SQL 语句里,命名和问号形式不能同时使用,只能选择其中一种参数形式。如果使用命名形式的占位标记,那么标记的命名必须是唯一的。

接下来我们看一下使用命名形式的参数占位符,查询指定的 SQL 语句,示例如下:

<?php
    $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try{
        $pdo = new PDO($dsn,$user,$pwd);
        $sql = "SELECT name,age,sex FROM user WHERE age = :age";
        $sth = $pdo -> prepare($sql);
        $sth -> execute([&#39;:age&#39;=>11]);
        $res1 = $sth -> fetchAll();
        $sth -> execute(array(&#39;:age&#39;=>14));
        $res2 = $sth -> fetchAll();
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;
        print_r($res1);
        print_r($res2);
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>

输出结果:

PHP資料庫學習如何使用PDO執行SQL語句?

上述示例是使用命名形式的参数占位符,查询指定的 SQL 语句,接下来我们看一下使用问号形式的参数占位符,查询指定的 SQL 语句。示例如下:

<?php
    $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    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,&#39;男&#39;]);
        $res1 = $sth -> fetchAll();
        $sth -> execute(array(11,&#39;女&#39;));
        $res2 = $sth -> fetchAll();
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;
        print_r($res1);
        print_r($res2);
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>

输出结果:

PHP資料庫學習如何使用PDO執行SQL語句?

由此我们便通过使用问号形式的参数占位符,查询指定的 SQL 语句。

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

以上是PHP資料庫學習如何使用PDO執行SQL語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn