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

    <tfoot id='gzBVL'></tfoot>
  1. <small id='gzBVL'></small><noframes id='gzBVL'>

  2. <i id='gzBVL'><tr id='gzBVL'><dt id='gzBVL'><q id='gzBVL'><span id='gzBVL'><b id='gzBVL'><form id='gzBVL'><ins id='gzBVL'></ins><ul id='gzBVL'></ul><sub id='gzBVL'></sub></form><legend id='gzBVL'></legend><bdo id='gzBVL'><pre id='gzBVL'><center id='gzBVL'></center></pre></bdo></b><th id='gzBVL'></th></span></q></dt></tr></i><div class="lgyxdqa" id='gzBVL'><tfoot id='gzBVL'></tfoot><dl id='gzBVL'><fieldset id='gzBVL'></fieldset></dl></div>
    <legend id='gzBVL'><style id='gzBVL'><dir id='gzBVL'><q id='gzBVL'></q></dir></style></legend>
        <bdo id='gzBVL'></bdo><ul id='gzBVL'></ul>
    1. PHP Postgres PDO 驅(qū)動(dòng)不支持prepared statement?

      PHP Postgres PDO driver does not support prepared statement?(PHP Postgres PDO 驅(qū)動(dòng)不支持prepared statement?)

        <tbody id='kBbGL'></tbody>
    2. <i id='kBbGL'><tr id='kBbGL'><dt id='kBbGL'><q id='kBbGL'><span id='kBbGL'><b id='kBbGL'><form id='kBbGL'><ins id='kBbGL'></ins><ul id='kBbGL'></ul><sub id='kBbGL'></sub></form><legend id='kBbGL'></legend><bdo id='kBbGL'><pre id='kBbGL'><center id='kBbGL'></center></pre></bdo></b><th id='kBbGL'></th></span></q></dt></tr></i><div class="8cmmzih" id='kBbGL'><tfoot id='kBbGL'></tfoot><dl id='kBbGL'><fieldset id='kBbGL'></fieldset></dl></div>

          <legend id='kBbGL'><style id='kBbGL'><dir id='kBbGL'><q id='kBbGL'></q></dir></style></legend>

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

            <bdo id='kBbGL'></bdo><ul id='kBbGL'></ul>
            <tfoot id='kBbGL'></tfoot>
                本文介紹了PHP Postgres PDO 驅(qū)動(dòng)不支持prepared statement?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

                問(wèn)題描述

                我是不是瘋了,還是 Postgres PDO 驅(qū)動(dòng)程序不支持準(zhǔn)備好的語(yǔ)句,而是在客戶端模擬它們?

                Am I losing my mind, or does the Postgres PDO driver just not support prepared statements, but instead emulates them client side?

                以下代碼為 prepare() 調(diào)用返回 NO ERROR,即使它應(yīng)該.相反,它在調(diào)用 execute() 時(shí)返回適用的錯(cuò)誤.

                The following code returns NO ERROR for the prepare() call, even though it should. Instead, it returns the applicable error when execute() is called.

                因?yàn)楦鶕?jù) Daniel Vérité 我錯(cuò)了,我添加了他建議的代碼.我仍然收到錯(cuò)誤.我的代碼現(xiàn)在看起來(lái)像下面這樣,添加了 Daniel 的行.

                Since according to Daniel Vérité I'm wrong, I added his suggested code. I still get the error. My code now looks like the below, with Daniel's line added.

                <?php
                $pdo = new PDO("pgsql:host=myhost;dbname=mydatabase");
                
                $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);  // as suggested by Daniel
                
                $sth = $pdo->prepare('COMPLETE GARBAGE');
                echo "[prepare] errorInfo = " . print_r($sth->errorInfo(), true);
                
                $sth->execute();
                echo "[execute] errorInfo = " . print_r($sth->errorInfo(), true);
                

                PHP 5.3.15 版,PHP Postgres 客戶端 9.1.4 版,Postgres 服務(wù)器版 9.2.1.

                PHP version 5.3.15, PHP Postgres client version 9.1.4, Postgres server version 9.2.1.

                推薦答案

                參見 http://www.php.net/manual/en/pdo.prepare.php

                注意:

                模擬的預(yù)處理語(yǔ)句不與數(shù)據(jù)庫(kù)通信服務(wù)器,因此 PDO::prepare() 不檢查語(yǔ)句.

                Emulated prepared statements does not communicate with the database server so PDO::prepare() does not check the statement.

                (實(shí)際上,無(wú)論如何都不會(huì)立即發(fā)送真正的準(zhǔn)備好的語(yǔ)句,請(qǐng)參閱下面對(duì) Q2 的回答)

                (in fact real prepared statements are not sent immediately anyway, see answer to Q2 below)

                無(wú)論如何你可以發(fā)出:

                $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 
                

                獲得使用 SQL PREPARE 命令實(shí)現(xiàn)的真正準(zhǔn)備好的語(yǔ)句.請(qǐng)參閱http://www.php.net/manual/en/pdo.setattribute.php了解更多.

                to get real prepared statements implemented with the SQL PREPARE command. See http://www.php.net/manual/en/pdo.setattribute.php for more.

                在進(jìn)一步的討論和測(cè)試中,出現(xiàn)了兩個(gè)問(wèn)題:

                On further discussion and tests, two questions arise:

                第一季度.為什么 pdo::getAttribute(PDO::ATTR_EMULATE_PREPARES) 會(huì)產(chǎn)生錯(cuò)誤?
                實(shí)際上 setAttribute 沒(méi)有出錯(cuò),但是 getAttribute(PDO::ATTR_EMULATE_PREPARES) 說(shuō):

                Q1. Why does pdo::getAttribute(PDO::ATTR_EMULATE_PREPARES) yield an error?
                Indeed setAttribute doesn't error out but getAttribute(PDO::ATTR_EMULATE_PREPARES) says:

                'SQLSTATE[IM001]: 驅(qū)動(dòng)程序不支持此功能:驅(qū)動(dòng)程序支持不支持該屬性'

                'SQLSTATE[IM001]: Driver does not support this function: driver does not support that attribute'

                查看 pdo::getAttribute 的文檔,它說(shuō)常量適用于數(shù)據(jù)庫(kù)連接的如下,從PDO::ATTR_AUTOCOMMITPDO::ATTR_TIMEOUT的一些常量,值得注意的是PDO::ATTR_EMULATE_PREPARES 不在其中.所以嚴(yán)格來(lái)說(shuō),無(wú)論如何,我們不應(yīng)該期望 getAttribute(PDO::ATTR_EMULATE_PREPARES) 起作用.

                Looking at the documentation for pdo::getAttribute, it says The constants that apply to database connections are as follows, and a number of constants follow from PDO::ATTR_AUTOCOMMIT to PDO::ATTR_TIMEOUT, and it's remarkable that PDO::ATTR_EMULATE_PREPARES is not in them. So strictly speaking, we should not expect getAttribute(PDO::ATTR_EMULATE_PREPARES) to work, anyway.

                現(xiàn)在查看源代碼可以肯定的是,pdo_pgsql 驅(qū)動(dòng)程序似乎提供了一個(gè) pdo_pgsql_get_attribute 函數(shù),該函數(shù)具有一個(gè) switch 語(yǔ)句:

                Now looking at the source code to be sure, it appears that the pdo_pgsql driver provides a pdo_pgsql_get_attribute function that has a switch statement on:

                • PDO_ATTR_CLIENT_VERSION
                • PDO_ATTR_SERVER_VERSION
                • PDO_ATTR_CONNECTION_STATUS
                • PDO_ATTR_SERVER_INFO

                就是這樣.沒(méi)有 PDO_ATTR_EMULATE_PREPARES 的痕跡,這就是最終出現(xiàn)此錯(cuò)誤的原因.

                and that's it. No trace of PDO_ATTR_EMULATE_PREPARES which is why ultimately this error appears.

                另一方面,函數(shù)pdo_pgsql_set_attr有一個(gè)switch語(yǔ)句:

                On the other hand, the function pdo_pgsql_set_attr has a switch statement on:

                • PDO_ATTR_EMULATE_PREPARES
                • PDO_PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT

                確認(rèn)在設(shè)置時(shí)實(shí)際考慮了此屬性.所以 PDO 只是與 getAttribute 不一致,不匹配 setAttribute.

                which confirms that this attribute is actually taken into account when set. So PDO is just inconsistent with getAttribute that doesn't match setAttribute.

                Q2 - 當(dāng)準(zhǔn)備模擬為假時(shí),為什么虛假語(yǔ)句在準(zhǔn)備時(shí)不會(huì)立即引發(fā)錯(cuò)誤?

                考慮pgsql_statement.c中的這段代碼:

                        if (!S->is_prepared) {
                stmt_retry:
                            /* we deferred the prepare until now, because we didn't
                             * know anything about the parameter types; now we do */
                            S->result = PQprepare(H->server, S->stmt_name, S->query, 
                                        stmt->bound_params ? zend_hash_num_elements(stmt->bound_params) : 0,
                                        S->param_types);
                

                它表明使用了 PQprepare(所以這是一個(gè)真正的"準(zhǔn)備好的語(yǔ)句),而且該語(yǔ)句不會(huì)立即發(fā)送到服務(wù)器.這就是 dbo::prepare("bogus statement") 不會(huì)返回 false 的原因:它實(shí)際上不會(huì)因?yàn)槿鄙賲?shù)類型而發(fā)送到服務(wù)器.

                It shows that PQprepare is used (so that's a "real" prepared statement), but also that the statement is not immediately sent to the server. That's why the dbo::prepare("bogus statement") won't return false: it's actually not sent to the server for lack of parameter types.

                這篇關(guān)于PHP Postgres PDO 驅(qū)動(dòng)不支持prepared statement?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

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

                相關(guān)文檔推薦

                Deadlock exception code for PHP, MySQL PDOException?(PHP、MySQL PDOException 的死鎖異常代碼?)
                PHP PDO MySQL scrollable cursor doesn#39;t work(PHP PDO MySQL 可滾動(dòng)游標(biāo)不起作用)
                PHP PDO ODBC connection(PHP PDO ODBC 連接)
                Using PDO::FETCH_CLASS with Magic Methods(使用 PDO::FETCH_CLASS 和魔術(shù)方法)
                php pdo get only one value from mysql; value that equals to variable(php pdo 只從 mysql 獲取一個(gè)值;等于變量的值)
                MSSQL PDO could not find driver(MSSQL PDO 找不到驅(qū)動(dòng)程序)

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

                    <legend id='b22uR'><style id='b22uR'><dir id='b22uR'><q id='b22uR'></q></dir></style></legend>
                    <i id='b22uR'><tr id='b22uR'><dt id='b22uR'><q id='b22uR'><span id='b22uR'><b id='b22uR'><form id='b22uR'><ins id='b22uR'></ins><ul id='b22uR'></ul><sub id='b22uR'></sub></form><legend id='b22uR'></legend><bdo id='b22uR'><pre id='b22uR'><center id='b22uR'></center></pre></bdo></b><th id='b22uR'></th></span></q></dt></tr></i><div class="swggtk2" id='b22uR'><tfoot id='b22uR'></tfoot><dl id='b22uR'><fieldset id='b22uR'></fieldset></dl></div>
                    • <bdo id='b22uR'></bdo><ul id='b22uR'></ul>
                      1. <tfoot id='b22uR'></tfoot>

                          <tbody id='b22uR'></tbody>

                          主站蜘蛛池模板: Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 打造全球沸石生态圈 - 国投盛世 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 中天寰创-内蒙古钢结构厂家|门式刚架|钢结构桁架|钢结构框架|包头钢结构煤棚 | 内窥镜-工业内窥镜厂家【上海修远仪器仪表有限公司】 | 污水处理设备,一体化泵站,一体化净水设备-「梦之洁环保设备厂家」 | 工业废水处理|污水处理厂|废水治理设备工程技术公司-苏州瑞美迪 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | 新疆散热器,新疆暖气片,新疆电锅炉,光耀暖通公司 | 中原网视台| 曙光腾达官网-天津脚手架租赁-木板架出租-移动门式脚手架租赁「免费搭设」 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | DDoS安全防护官网-领先的DDoS安全防护服务商 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 淋巴细胞分离液_口腔医疗器材-精欣华医疗器械(无锡)有限公司 | 反渗透阻垢剂-缓蚀阻垢剂厂家-循环水处理药剂-山东鲁东环保科技有限公司 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | 100_150_200_250_300_350_400公斤压力空气压缩机-舰艇航天配套厂家 | 湖南自考_湖南自学考试 | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 闪蒸干燥机-喷雾干燥机-带式干燥机-桨叶干燥机-[常州佳一干燥设备] | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 冷却塔减速机器_冷却塔皮带箱维修厂家_凉水塔风机电机更换-广东康明冷却塔厂家 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 实木家具_实木家具定制_全屋定制_美式家具_圣蒂斯堡官网 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 | 箱式破碎机_移动方箱式破碎机/价格/厂家_【华盛铭重工】 | 长江船运_国内海运_内贸船运_大件海运|运输_船舶运输价格_钢材船运_内河运输_风电甲板船_游艇运输_航运货代电话_上海交航船运 | b2b网站大全,b2b网站排名,找b2b网站就上地球网 | 渣土车电机,太阳能跟踪器电机,蜗轮蜗杆减速电机厂家-淄博传强电机 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司 | 四探针电阻率测试仪-振实密度仪-粉末流动性测定仪-宁波瑞柯微智能 | 房在线-免费房产管理系统软件-二手房中介房屋房源管理系统软件 | 高压分散机(高压细胞破碎仪)百科-北京天恩瀚拓| 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 长沙中央空调维修,中央空调清洗维保,空气能热水工程,价格,公司就找维小保-湖南维小保环保科技有限公司 | 北京普辉律师事务所官网_北京律师24小时免费咨询|法律咨询 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 滁州高低温冲击试验箱厂家_安徽高低温试验箱价格|安徽希尔伯特 | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 |