日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
PHP使用PDO執(zhí)行SQL語句
在 PDO 中,我們可以使用三種方式來執(zhí)行 SQL 語句,分別是 exec() 方法,query() 方法,以及預(yù)處理語句 prepare() 和 execute() 方法。下面就來分別介紹一下。

創(chuàng)新互聯(lián)主要從事網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)堯都,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

1) exec() 方法

當(dāng)執(zhí)行 INSERT、UPDATE 和 DELETE 等不需要返回結(jié)果集的 SQL 語句時(shí),可以使用 PDO 對(duì)象中的 exec() 方法。該方法成功執(zhí)行后,將返回受影響的行數(shù),語法格式如下:

PDO::exec(string $sql)

其中 $sql 為要執(zhí)行的 SQL 語句。

注意:exec() 方法不會(huì)從 SELECT 查詢語句中獲取相應(yīng)的結(jié)果。

【示例】使用 exec() 方法向數(shù)據(jù)庫中添加一條數(shù)據(jù)。

 exec($sql);
        if($res) echo '成功添加 '.$res.' 條數(shù)據(jù)!';
    }catch(PDOException $e){
        echo '數(shù)據(jù)庫連接失敗:'.$e -> getMessage();
    }
?>

運(yùn)行結(jié)果如下:

成功添加 1 條數(shù)據(jù)!

2) query() 方法

當(dāng)執(zhí)行需要返回結(jié)果集的 SELECT 查詢語句時(shí),可以使用 PDO 對(duì)象中的 query() 方法。如果該方法執(zhí)行成功,則會(huì)返回一個(gè) PDOStatement 對(duì)象。如果使用了query() 方法,并想了解獲取的數(shù)據(jù)行總數(shù),可以使用 PDOStatement 對(duì)象中的 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 為要執(zhí)行的 SQL 語句;其余的參數(shù)用來為語句設(shè)置默認(rèn)的獲取模式,相當(dāng)于調(diào)用結(jié)果對(duì)象 PDOStatement::setFetchMode() 方法。

【示例】使用 query() 方法查詢前面我們添加的那條數(shù)據(jù)。

 query($sql,PDO::FETCH_ASSOC);
        print_r($res);
    }catch(PDOException $e){
        echo '數(shù)據(jù)庫連接失?。?.$e -> getMessage();
    }
?>

運(yùn)行結(jié)果如下:

PDOStatement Object ( [queryString] => SELECT * FROM user WHERE name='小剛' )

使用 query() 和 exec() 方法有以下幾點(diǎn)需要注意:

  • query() 和 exec() 都可以執(zhí)行所有的 SQL 語句,只是返回值不同而已;
  • query() 可以實(shí)現(xiàn)所有 exec() 的功能;
  • 當(dāng)把 select 語句應(yīng)用到 exec() 時(shí),總是返回 0;
  • 如果要看查詢的具體結(jié)果,可以通過 foreach 語句完成循環(huán)輸出。

3) prepare() 和 execute() 方法

當(dāng)同一個(gè)查詢需要多次執(zhí)行時(shí)(有時(shí)需要迭代傳入不同的參數(shù)),使用預(yù)處理語句的方式來實(shí)現(xiàn)效率會(huì)更高。使用預(yù)處理語句就需要使用 PDO 對(duì)象中的 prepare() 方法去準(zhǔn)備一個(gè)將要執(zhí)行的查詢,再使用 PDOStatement 對(duì)象中的 execute() 方法來執(zhí)行。

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

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

參數(shù)說明如下:

  • $statement:必須是對(duì)目標(biāo)數(shù)據(jù)庫有效的 SQL 語句模板;
  • $driver_options:為可選參數(shù)(數(shù)組類型),包含一個(gè)或多個(gè)鍵值對(duì),為返回的 PDOStatement 對(duì)象設(shè)置屬性。最常使用到是將 PDO::ATTR_CURSOR 值設(shè)置為 PDO::CURSOR_SCROLL 來請(qǐng)求一個(gè)可滾動(dòng)游標(biāo)。

SQL 語句模板中可以包含零個(gè)或多個(gè)參數(shù)占位標(biāo)記,格式可以是命名(:name)或問號(hào)(?)的形式,當(dāng)它執(zhí)行時(shí)將用真實(shí)數(shù)據(jù)取代。在同一個(gè) SQL 語句里,命名和問號(hào)形式不能同時(shí)使用,只能選擇其中一種參數(shù)形式。如果使用命名形式的占位標(biāo)記,那么標(biāo)記的命名必須是唯一的。

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

PDOStatement::execute([array $input_parameters])

參數(shù) $input_parameters 為一個(gè)元素個(gè)數(shù)和將被執(zhí)行的 SQL 語句中綁定的參數(shù)一樣多的數(shù)組。綁定的值不能超過指定的個(gè)數(shù),如果在 $input_parameters 中存在比 PDO::prepare() 預(yù)處理的 SQL 指定的多的鍵名,則此語句將會(huì)失敗并發(fā)出一個(gè)錯(cuò)誤。

【示例】使用命名形式的參數(shù)占位符,查詢指定的 SQL 語句。

 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 '數(shù)據(jù)庫連接失敗:'.$e -> getMessage();
    }
?>

運(yùn)行結(jié)果如下:

Array
(
    [0] => Array
        (
            [name] => 李四
            [0] => 李四
            [age] => 11
            [1] => 11
            [sex] => 男
            [2] => 男
        )
    [1] => Array
        (
            [name] => 小紅
            [0] => 小紅
            [age] => 11
            [1] => 11
            [sex] => 女
            [2] => 女
        )
)
Array
(
    [0] => Array
        (
            [name] => 小剛
            [0] => 小剛
            [age] => 14
            [1] => 14
            [sex] => 男
            [2] => 男
        )
)

【示例】使用問號(hào)形式的參數(shù)占位符,查詢指定的 SQL 語句。

 prepare($sql);
        $sth -> execute([12,'男']);
        $res1 = $sth -> fetchAll();
        $sth -> execute(array(11,'女'));
        $res2 = $sth -> fetchAll();
        echo '
';
        print_r($res1);
        print_r($res2);
    }catch(PDOException $e){
        echo '數(shù)據(jù)庫連接失?。?.$e -> getMessage();
    }
?>

運(yùn)行結(jié)果如下:

Array
(
    [0] => Array
        (
            [name] => 張三
            [0] => 張三
            [age] => 12
            [1] => 12
            [sex] => 男
            [2] => 男
        )
    [1] => Array
        (
            [name] => 王五
            [0] => 王五
            [age] => 12
            [1] => 12
            [sex] => 男
            [2] => 男
        )
)
Array
(
    [0] => Array
        (
            [name] => 小紅
            [0] => 小紅
            [age] => 11
            [1] => 11
            [sex] => 女
            [2] => 女
        )
)


當(dāng)前題目:PHP使用PDO執(zhí)行SQL語句
文章分享:http://www.dlmjj.cn/article/djegceg.html