pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

    1. <legend id='FHfrI'><style id='FHfrI'><dir id='FHfrI'><q id='FHfrI'></q></dir></style></legend>
    2. <small id='FHfrI'></small><noframes id='FHfrI'>

      <tfoot id='FHfrI'></tfoot>

          <bdo id='FHfrI'></bdo><ul id='FHfrI'></ul>
        <i id='FHfrI'><tr id='FHfrI'><dt id='FHfrI'><q id='FHfrI'><span id='FHfrI'><b id='FHfrI'><form id='FHfrI'><ins id='FHfrI'></ins><ul id='FHfrI'></ul><sub id='FHfrI'></sub></form><legend id='FHfrI'></legend><bdo id='FHfrI'><pre id='FHfrI'><center id='FHfrI'></center></pre></bdo></b><th id='FHfrI'></th></span></q></dt></tr></i><div class="dntlj7l" id='FHfrI'><tfoot id='FHfrI'></tfoot><dl id='FHfrI'><fieldset id='FHfrI'></fieldset></dl></div>

        函數(shù)中的 PDO try-catch 用法

        PDO try-catch usage in functions(函數(shù)中的 PDO try-catch 用法)

        <small id='di76f'></small><noframes id='di76f'>

            <i id='di76f'><tr id='di76f'><dt id='di76f'><q id='di76f'><span id='di76f'><b id='di76f'><form id='di76f'><ins id='di76f'></ins><ul id='di76f'></ul><sub id='di76f'></sub></form><legend id='di76f'></legend><bdo id='di76f'><pre id='di76f'><center id='di76f'></center></pre></bdo></b><th id='di76f'></th></span></q></dt></tr></i><div class="rdfzzn7" id='di76f'><tfoot id='di76f'></tfoot><dl id='di76f'><fieldset id='di76f'></fieldset></dl></div>

              • <bdo id='di76f'></bdo><ul id='di76f'></ul>
                • <legend id='di76f'><style id='di76f'><dir id='di76f'><q id='di76f'></q></dir></style></legend>
                    <tbody id='di76f'></tbody>
                  <tfoot id='di76f'></tfoot>
                • 本文介紹了函數(shù)中的 PDO try-catch 用法的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

                  問題描述

                  我正在考慮在我未來的所有 web 應(yīng)用程序中使用 PDO.目前(使用到目前為止我從 SO 中學(xué)到的知識(shí)),我在我的站點(diǎn)中處理數(shù)據(jù)庫連接的是一個(gè)像這樣的 Singleton 類:

                  I'm thinking of using PDO in all of my future webapp. Currently (using what I've learned from SO so far), what I have in my site to handle database connection is a Singleton class like this :

                  class DB {
                  
                      private static $instance = NULL;
                      private static $dsn      = "mysql:host=localhost;dbname=mydatabase;";
                      private static $db_user  = 'root';
                      private static $db_pass  = '0O0ooIl1';
                  
                      private function __construct() 
                      {
                  
                      }
                      private function __clone()
                      {
                  
                      }   
                      public static function getInstance() {
                  
                          if (!self::$instance)
                          {           
                              self::$instance = new PDO(self::$dsn, self::$db_user, self::$db_pass);
                              self::$instance-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                          }
                          return self::$instance;
                      }
                  }
                  

                  和另一個(gè)文件 (functions.php) 與內(nèi)容特定的函數(shù)看起來完全一樣:

                  and another file (functions.php) with content-specific functions looking exactly like this one :

                  function get_recent_activities ()
                  {    
                      try
                      {    
                          $db = DB::getInstance();
                          // --prepare and execute query here, fetch the result--
                          return $my_list_of_recent_activities;
                      }
                      catch (PDOException $e)
                      {
                          return "some fail-messages";
                      }
                  }
                  ...
                  

                  意味著我必須在所有函數(shù)中重復(fù) try .. catch 部分.

                  meaning that I have to repeat the try .. catch part in all of the functions.

                  我的問題是:

                  1. 我應(yīng)該如何提高效率?(例如,不必在所有函數(shù)中重復(fù) try..catch,但仍然能夠在每個(gè)函數(shù)上返回不同的失敗消息")
                  2. 這已經(jīng)是一個(gè)好習(xí)慣了嗎?我還是 PDO 和 OOP 的新手(還有很多東西要學(xué)習(xí)),所以(截至目前),我真的看不出有什么缺點(diǎn)或可以改進(jìn)的地方.
                  1. How should I make that more efficient ? (eg. not having to repeat try..catch in all functions, and yet still able to return different "fail-message" on each one)
                  2. Is this already a good practice ? I'm still new at PDO and OOP (still a lot more to learn), so (as of now), I can't really see any disadvantages or things that can be improved in there.

                  如果這看起來不清楚或太長,我很抱歉.提前致謝.

                  I'm sorry if that seems unclear or too long. Thanks in advance.

                  推薦答案

                  你的實(shí)現(xiàn)很好,而且在大多數(shù)情況下都能很好地工作.

                  Your implementation is just fine, and it'll work perfectly well for most purposes.

                  沒有必要將每個(gè)查詢都放在 try/catch 塊中,事實(shí)上,在大多數(shù)情況下,您實(shí)際上并不想這樣做.這樣做的原因是,如果查詢生成異常,則是語法錯(cuò)誤或數(shù)據(jù)庫問題等致命問題的結(jié)果,而這些不是您在執(zhí)行每個(gè)查詢時(shí)都應(yīng)該考慮的問題.

                  It's not necessary to put every query inside a try/catch block, and in fact in most cases you actually don't want to. The reason for this is that if a query generates an exception, it's the result of a fatal problem like a syntax error or a database issue, and those are not issues that you should be accounting for with every query that you do.

                  例如:

                  try {
                      $rs = $db->prepare('SELECT * FROM foo');
                      $rs->execute();
                      $foo = $rs->fetchAll();
                  } catch (Exception $e) {
                      die("Oh noes! There's an error in the query!");
                  }
                  

                  這里的查詢要么正常工作,要么根本不工作.它根本不起作用的情況在生產(chǎn)系統(tǒng)上不應(yīng)該有規(guī)律地發(fā)生,所以它們不是您應(yīng)該在這里檢查的條件.這樣做實(shí)際上適得其反,因?yàn)槟挠脩魰?huì)收到永遠(yuǎn)不會(huì)改變的錯(cuò)誤,而您不會(huì)收到提醒您問題的異常消息.

                  The query here will either work properly or not work at all. The circumstances where it wouldn't work at all should not ever occur with any regularity on a production system, so they're not conditions that you should check for here. Doing so is actually counterproductive, because your users get an error that will never change, and you don't get an exception message that would alert you to the problem.

                  相反,只需這樣寫:

                  $rs = $db->prepare('SELECT * FROM foo');
                  $rs->execute();
                  $foo = $rs->fetchAll();
                  

                  一般來說,您唯一需要捕獲和處理查詢異常的時(shí)間是在查詢失敗時(shí)您想執(zhí)行其他操作的時(shí)候.例如:

                  In general, the only time that you'll want to catch and handle a query exception is when you want to do something else if the query fails. For example:

                  // We're handling a file upload here.
                  try {
                      $rs = $db->prepare('INSERT INTO files (fileID, filename) VALUES (?, ?)');
                      $rs->execute(array(1234, '/var/tmp/file1234.txt'));
                  } catch (Exception $e) {
                      unlink('/var/tmp/file1234.txt');
                      throw $e;
                  }
                  

                  您需要編寫一個(gè)簡單的異常處理程序,用于記錄或通知您生產(chǎn)環(huán)境中發(fā)生的數(shù)據(jù)庫錯(cuò)誤,并向您的用戶顯示友好的錯(cuò)誤消息而不是異常跟蹤.請參閱 http://www.php.net/set-exception-handler 了解有關(guān)怎么做.

                  You'll want to write a simple exception handler that logs or notifies you of database errors that occur in your production environment and displays a friendly error message to your users instead of the exception trace. See http://www.php.net/set-exception-handler for information on how to do that.

                  這篇關(guān)于函數(shù)中的 PDO try-catch 用法的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

                  【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

                  相關(guān)文檔推薦

                  MySQLi prepared statement amp; foreach loop(MySQLi準(zhǔn)備好的語句amp;foreach 循環(huán))
                  Is mysqli_insert_id() gets record from whole server or from same user?(mysqli_insert_id() 是從整個(gè)服務(wù)器還是從同一用戶獲取記錄?)
                  PHP MySQLi doesn#39;t recognize login info(PHP MySQLi 無法識(shí)別登錄信息)
                  mysqli_select_db() expects exactly 2 parameters(mysqli_select_db() 需要 2 個(gè)參數(shù))
                  Php mysql pdo query: fill up variable with query result(Php mysql pdo 查詢:用查詢結(jié)果填充變量)
                  MySQLI 28000/1045 Access denied for user #39;root#39;@#39;localhost#39;(MySQLI 28000/1045 用戶“root@“l(fā)ocalhost的訪問被拒絕)
                  <i id='MOvPW'><tr id='MOvPW'><dt id='MOvPW'><q id='MOvPW'><span id='MOvPW'><b id='MOvPW'><form id='MOvPW'><ins id='MOvPW'></ins><ul id='MOvPW'></ul><sub id='MOvPW'></sub></form><legend id='MOvPW'></legend><bdo id='MOvPW'><pre id='MOvPW'><center id='MOvPW'></center></pre></bdo></b><th id='MOvPW'></th></span></q></dt></tr></i><div class="zxx7bp7" id='MOvPW'><tfoot id='MOvPW'></tfoot><dl id='MOvPW'><fieldset id='MOvPW'></fieldset></dl></div>

                          <small id='MOvPW'></small><noframes id='MOvPW'>

                            <tbody id='MOvPW'></tbody>
                          • <bdo id='MOvPW'></bdo><ul id='MOvPW'></ul>
                            <tfoot id='MOvPW'></tfoot>
                            <legend id='MOvPW'><style id='MOvPW'><dir id='MOvPW'><q id='MOvPW'></q></dir></style></legend>
                            主站蜘蛛池模板: 塑料瓶罐_食品塑料瓶_保健品塑料瓶_调味品塑料瓶–东莞市富慷塑料制品有限公司 | 温州食堂承包 - 温州市尚膳餐饮管理有限公司 | 同学聚会纪念册制作_毕业相册制作-成都顺时针宣传画册设计公司 | 电动葫芦-河北悍象起重机械有限公司| 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | arch电源_SINPRO_开关电源_模块电源_医疗电源-东佑源 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 | 国资灵活用工平台_全国灵活用工平台前十名-灵活用工结算小帮手 | 上海诺狮景观规划设计有限公司| 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 蜘蛛车-登高车-高空作业平台-高空作业车-曲臂剪叉式升降机租赁-重庆海克斯公司 | 杭州门窗厂家_阳光房_包阳台安装电话-杭州窗猫铝合金门窗 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 厦门ISO认证|厦门ISO9001认证|厦门ISO14001认证|厦门ISO45001认证-艾索咨询专注ISO认证行业 | 重庆轻质隔墙板-重庆安吉升科技有限公司 | 耳模扫描仪-定制耳机设计软件-DLP打印机-asiga打印机-fitshape「飞特西普」 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | PC阳光板-PC耐力板-阳光板雨棚-耐力板雨棚,厂家定制[优尼科板材] | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 不锈钢钢格栅板_热浸锌钢格板_镀锌钢格栅板_钢格栅盖板-格美瑞 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | NM-02立式吸污机_ZHCS-02软轴刷_二合一吸刷软轴刷-厦门地坤科技有限公司 | 采暖炉_取暖炉_生物质颗粒锅炉_颗粒壁炉_厂家加盟批发_烟台蓝澳采暖设备有限公司 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 硅胶管挤出机厂家_硅胶挤出机生产线_硅胶条挤出机_臣泽智能装备 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家 | 全自动贴标机-套标机-工业热风机-不干胶贴标机-上海厚冉机械 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | Win10系统下载_32位/64位系统/专业版/纯净版下载 |