红穆笔记
首頁 語言筆記 sqlite 使用PDO執行SQL語句exec()、query()
語言筆記 mySql

sqlite 使用PDO執行SQL語句exec()、query()

sqlite 使用PDO执行SQL语句exec()、query()

在PHP腳本中,通過PDO執行SQL查詢與數據庫進行交互,可以分爲三種不同的策略,使用哪一種方法取決於你要做什麼操作。

1、使用PDO::exec()方法

當執行INSERT、UPDATE和DELETE等沒有結果集的查詢時,使用PDO對象中的exec()方法去執行。該方法成功執行後,將返回受影響的行數。注意,該方法不能用於SELECT查詢。示例如下所示:


<?php
    try {
        $pdo = new PDO ('mysql:host=localhost;dbname=testdb','root','123');
        $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        $pdo->exec('set names "utf8"');
    } catch (PDOException $e) {
        exit("數據庫連接失敗: ".$e -> getMessage());
    }

    $sql = "UPDATE contactInfo SET phone='15801680168' where name='高某某'";

    //使用exec()方法可以執行INSERT、UPDATE、DELETE等

    $affected = $pdo->exec($sql);

    if ($affected) {
        echo "數據表中受影響的行數爲: ".$affected;
    } else {
        print_r($pdo->errorInfo());
    }
    
 ?>

2、使用PDO::query()方法

當執行返回結果集的SELECT查詢時,或者所影響的行數無關緊要時,應當使用PDO對象中的query()方法。如果該方法成功執行指定的查詢,則返回一個PDOStatement對象。如果使用了query()方法,並想了解獲取的數據行總數,可以使用PDOStatement對象中的rowCount()方法獲取。示例代碼如下所示:


 <?php  
     try {
        $pdo = new PDO ('mysql:host=localhost;dbname=testdb','root','123');
        $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        $pdo->exec('set names "utf8"');
    } catch (PDOException $e) {
        exit("數據庫連接失敗: ".$e -> getMessage());
    }
    $sql = "SELECT name, phone, email FROM contactInfo WHERE departmentId='D01'";
    try {
        //執行SELECT查詢,並返回PDOstatement對象  
        $pdostatement = $pdo->query("$sql");
        echo "一共從表中獲取到".$pdostatement->rowCount()."條記錄:n";
        //利用循環輸出
        foreach ($pdostatement as $row) {
            echo $row['name'] . "t";           //輸出從表中獲取到的聯繫人的名字
            echo $row['phone'] . "t";       //輸出從表中獲取到的聯繫人的電話
            echo $row['email'] . "n";       //輸出從表中獲取到的聯繫人的電子郵件
        }
    } catch (PDOException $e) {
        echo $e->getMessage(); 
    }
 ?>

3、使用PDO::prepare()和PDOStatement::execute()兩個方法

當同一個查詢需要多次執行時(有時需要迭代傳入不同的列值),使用預處理語句的方式來實現效率會更高。使用預處理語句就需要使用PDO對象中的prepare()方法去準備一個將要執行的查詢,再使用PDOStatement對象中的execute()方法來執行。

 
微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

数据表的id自增顺序修复

數據表的id自增順序修復 語言筆記 mySql

1,刪除原有主鍵:ALTER TABLE `table_name` DROP `id`;2,添加新主鍵字段:ALTER TABLE `table_name` ADD `id`INT(11) NOT NULL FIRST;3,設置新主鍵:ALTER TABLE `table_name` MODIFY …
👁 177
mysql效率提升之limit这个狗东西

mysql效率提升之limit這個狗東西 語言筆記 mySql

mysql裏面,limit效率不高,特別是我幾大百萬數據,limit 100000, 50,這樣寫,查詢更是慢死,剛開始還挺快,後面服務器cup直接給我拉滿! 我還以爲是服務器被入侵了,於是找問題啊,找了幾天,結果發現是這個狗東西,可把我氣死了! 於是查詢了一下limit的原理,emmm,改!必須改…
👁 155
sql语句 清空数据库

sql語句 清空數據庫 語言筆記 mySql

可以使用 TRUNCATE 命令清空一個表,如果需要清空整個數據庫,則需要逐個清空每個表。下面是一個清空整個數據庫的示例 SQL 語句:SET foreign_key_checks = 0; SELECT CONCAT('TRUNCATE TABLE `', table_name, '`;') FR…
👁 297
查询错误:#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

查詢錯誤:#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key 語言筆記 mySql

該錯誤提示表明您在創建表時定義了多個自動遞增列或未將自動遞增列定義爲主鍵或唯一鍵,因此MySQL無法創建該表。在MySQL中,只能有一個自動遞增列,並且必須將其定義爲主鍵或唯一鍵。 以下是解決此問題的可能方法: 確保只有一個自動遞增列:您應該檢查您的表定義,確保只有一個列被定義爲自動遞增列。如果您需…
👁 409

推薦閱讀

响应式陶瓷器皿餐具网站模板 0932

響應式陶瓷器皿餐具網站模板 0932 實用收藏 易優模板

此套eyoucms響應式模板適用於陶瓷器皿與餐具行業,設計風格典雅精緻,能夠展示陶瓷餐具產品、器皿系列、品牌故事及空間搭配。有助於陶瓷品牌在線上展示產品,吸引家庭與禮品客戶。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優…
👁 62
(自适应手机端)响应式装修设计网站模板 装修装潢公司网站源码下载 0973

(自適應手機端)響應式裝修設計網站模板 裝修裝潢公司網站源碼下載 0973 實用收藏 pbootcms模板

一款響應式裝修設計網站與裝潢公司PbootCMS網站模板,支持PC與WAP端。設計風格現代專業,適合展示裝修設計案例、施工實力及服務流程。有助於裝修公司在線上吸引業主,獲取項目。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.cn相關…
👁 48
网站资源文件源码说明注意点

網站資源文件源碼說明注意點 語言筆記

本站所有源碼資源均來源於網絡公開渠道,我們經過本地搭建、安裝測試,並針對大量兼容性問題(如板塊錯亂、樣式異常、運行報錯等)進行了修復與優化。在剔除無法運行或嚴重缺陷的資源後,我們對部分圖片和展示信息進行了適度處理,最終整理發佈,以供開發者學習與交流。由於站長時間與精力有限,資源中仍可能有個別未發現的…
👁 90
(自适应手机端)工业设备网站模板 响应式机械设备网站源码下载 0974

(自適應手機端)工業設備網站模板 響應式機械設備網站源碼下載 0974 實用收藏 pbootcms模板

一款工業設備與響應式機械設備PbootCMS網站模板,支持PC與WAP端。設計風格專業工業,適合各類機械設備製造企業展示產品系列。有助於機械公司在線上搭建品牌形象站,吸引工業客戶。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.cn相…
👁 48