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

    1. <tfoot id='htnsf'></tfoot>
      • <bdo id='htnsf'></bdo><ul id='htnsf'></ul>
      <legend id='htnsf'><style id='htnsf'><dir id='htnsf'><q id='htnsf'></q></dir></style></legend>

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

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

        php pdo 準(zhǔn)備重復(fù)變量

        php pdo prepare repetitive variables(php pdo 準(zhǔn)備重復(fù)變量)

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

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

            <tbody id='tteTK'></tbody>
          • <bdo id='tteTK'></bdo><ul id='tteTK'></ul>

                <legend id='tteTK'><style id='tteTK'><dir id='tteTK'><q id='tteTK'></q></dir></style></legend>
                • <tfoot id='tteTK'></tfoot>

                • 本文介紹了php pdo 準(zhǔn)備重復(fù)變量的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

                  問題描述

                  在編寫 pdo 語句時(shí),是否可以重復(fù)變量的值?我的意思是:

                  While writing a pdo statement, is it possible to repeat the value of a variable? I mean:

                  $query = "UPDATE users SET firstname = :name WHERE firstname = :name";
                  $stmt = $dbh -> prepare($query);
                  $stmt -> execute(array(":name" => "Jackie"));
                  

                  請(qǐng)注意,我重復(fù)了 ":name" 名稱,而我只提供了一次該值.我怎樣才能做到這一點(diǎn)?

                  Please note that I repeat the ":name" nameholder whereas I provide the value only once. How can I make this work?

                  推薦答案

                  簡單的答案是:你不能.PDO 對(duì)準(zhǔn)備好的語句使用抽象,但有一些限制.不幸的是,這是一個(gè),您必須使用類似

                  The simple answer is: You can't. PDO uses an abstraction for prepared statements which has some limitations. Unfortunately this is one, you have to work-around using something like

                  $query = "UPDATE users SET firstname = :name1 WHERE firstname = :name2";
                  $stmt = $dbh -> prepare($query);
                  $stmt -> execute(array(":name1" => "Jackie", ":name2" => "Jackie"));
                  

                  在某些情況下,例如使用某些版本的 PDO/MySQL 驅(qū)動(dòng)程序模擬準(zhǔn)備好的語句,支持重復(fù)命名參數(shù);但是,不應(yīng)依賴它,因?yàn)樗艽嗳?例如,它會(huì)使升級(jí)需要更多工作).

                  In certain cases, such as emulated prepared statements with some versions of the PDO/MySQL driver, repeated named parameters are supported; however, this shouldn't be relied upon, as it's brittle (it can make upgrades require more work, for example).

                  如果你想支持一個(gè)命名參數(shù)的多次出現(xiàn),你總是可以擴(kuò)展 PDO 和 PDOStatement(通過經(jīng)典繼承或通過組合),或者只是 PDOStatement 并通過設(shè)置 PDO::ATTR_STATEMENT_CLASS 屬性將您的類設(shè)置為語句類.擴(kuò)展的 PDOStatement(或 PDO::prepare)可以提取命名參數(shù),查找重復(fù)并自動(dòng)生成替換.它還會(huì)記錄這些重復(fù)項(xiàng).bind 和 execute 方法在傳遞命名參數(shù)時(shí)會(huì)測試該參數(shù)是否重復(fù)并將值綁定到每個(gè)替換參數(shù).

                  If you want to support multiple appearances of a named parameter, you can always extend PDO and PDOStatement (by classical inheritance or by composition), or just PDOStatement and set your class as the statement class by setting the PDO::ATTR_STATEMENT_CLASS attribute. The extended PDOStatement (or PDO::prepare) could extract the named parameters, look for repeats and automatically generate replacements. It would also record these duplicates. The bind and execute methods, when passed a named parameter, would test whether the parameter is repeated and bind the value to each replacement parameter.

                  注意:以下示例未經(jīng)測試,可能存在錯(cuò)誤(一些與語句解析相關(guān)的在代碼注釋中注明).

                  Note: the following example is untested and likely has bugs (some related to statement parsing are noted in code comments).

                  class PDO_multiNamed extends PDO {
                      function prepare($stmt) {
                          $params = array_count_values($this->_extractNamedParams());
                          # get just named parameters that are repeated
                          $repeated = array_filter($params, function ($count) { return $count > 1; });
                          # start suffixes at 0
                          $suffixes = array_map(function ($x) {return 0;}, $repeated);
                          /* Replace repeated named parameters. Doesn't properly parse statement,
                           * so may replacement portions of the string that it shouldn't. Proper
                           * implementation left as an exercise for the reader.
                           *
                           * $param only contains identifier characters, so no need to escape it
                           */
                          $stmt = preg_replace_callback(
                              '/(?:' . implode('|', array_keys($repeated)) . ')(?=W)/', 
                              function ($matches) use (&$suffixes) {
                                  return $matches[0] . '_' . $suffixes[$matches[0]]++;
                              }, $stmt);
                          $this->prepare($stmt, 
                                         array(
                                             PDO::ATTR_STATEMENT_CLASS => array('PDOStatement_multiNamed', array($repeated)))
                              );
                      }
                  
                      protected function _extractNamedParams() {
                          /* Not actually sufficient to parse named parameters, but it's a start.
                           * Proper implementation left as an exercise.
                           */
                          preg_match_all('/:w+/', $stmt, $params);
                          return $params[0];
                      }
                  }
                  
                  class PDOStatement_multiNamed extends PDOStatement {
                      protected $_namedRepeats;
                  
                      function __construct($repeated) {
                          # PDOStatement::__construct doesn't like to be called.
                          //parent::__construct();
                          $this->_namedRepeats = $repeated;
                      }
                  
                      /* 0 may not be an appropriate default for $length, but an examination of
                       * ext/pdo/pdo_stmt.c suggests it should work. Alternatively, leave off the
                       * last two arguments and rely on PHP's implicit variadic function feature.
                       */
                      function bindParam($param, &$var, $data_type=PDO::PARAM_STR, $length=0, $driver_options=array()) {
                          return $this->_bind(__FUNCTION__, $param, func_get_args());
                      }
                  
                      function bindValue($param, $var, $data_type=PDO::PARAM_STR) {
                          return $this->_bind(__FUNCTION__, $param, func_get_args());
                      }
                  
                      function execute($input_parameters=NULL) {
                          if ($input_parameters) {
                              $params = array();
                              # could be replaced by array_map_concat, if it existed
                              foreach ($input_parameters as $name => $val) {
                                  if (isset($this->_namedRepeats[$param])) {
                                      for ($i=0; $i < $this->_namedRepeats[$param], ++$i) {
                                          $params["{$name}_{$i}"] = $val;
                                      }
                                  } else {
                                      $params[$name] = $val;
                                  }
                              }
                              return parent::execute($params);
                          } else {
                              return parent::execute();
                          }
                      }
                  
                      protected function _bind($method, $param, $args) {
                          if (isset($this->_namedRepeats[$param])) {
                              $result = TRUE;
                              for ($i=0; $i < $this->_namedRepeats[$param], ++$i) {
                                  $args[0] = "{$param}_{$i}";
                                  # should this return early if the call fails?
                                  $result &= call_user_func_array("parent::$method", $args);
                              }
                              return $result;
                          } else {
                              return call_user_func_array("parent::$method", $args);
                          }
                      }
                  }
                  

                  這篇關(guān)于php pdo 準(zhǔn)備重復(fù)變量的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

                  【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(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的訪問被拒絕)
                    <tbody id='SSAka'></tbody>
                  <legend id='SSAka'><style id='SSAka'><dir id='SSAka'><q id='SSAka'></q></dir></style></legend>
                    1. <i id='SSAka'><tr id='SSAka'><dt id='SSAka'><q id='SSAka'><span id='SSAka'><b id='SSAka'><form id='SSAka'><ins id='SSAka'></ins><ul id='SSAka'></ul><sub id='SSAka'></sub></form><legend id='SSAka'></legend><bdo id='SSAka'><pre id='SSAka'><center id='SSAka'></center></pre></bdo></b><th id='SSAka'></th></span></q></dt></tr></i><div class="to5o5vf" id='SSAka'><tfoot id='SSAka'></tfoot><dl id='SSAka'><fieldset id='SSAka'></fieldset></dl></div>

                      • <bdo id='SSAka'></bdo><ul id='SSAka'></ul>
                          <tfoot id='SSAka'></tfoot>

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

                            主站蜘蛛池模板: 涂层测厚仪_漆膜仪_光学透过率仪_十大创新厂家-果欧电子科技公司 | 湖南长沙商标注册专利申请,长沙公司注册代理记账首选美创! | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 网优资讯-为循环资源、大宗商品、工业服务提供资讯与行情分析的数据服务平台 | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | 整合营销推广|营销网络推广公司|石家庄网站优化推广公司|智营销 好物生环保网、环保论坛 - 环保人的学习交流平台 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 上海logo设计| 山东螺杆空压机,烟台空压机,烟台开山空压机-烟台开山机电设备有限公司 | 红外光谱仪维修_二手红外光谱仪_红外压片机_红外附件-天津博精仪器 | 非甲烷总烃分析仪|环控百科 | 玻璃钢型材_拉挤模具_玻璃钢拉挤设备——滑县康百思 | 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | 南方珠江-南方一线电缆-南方珠江科技电缆-南方珠江科技有限公司 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 卷筒电缆-拖链电缆-特种柔性扁平电缆定制厂家「上海缆胜」 | 啤酒设备-小型啤酒设备-啤酒厂设备-济南中酿机械设备有限公司 | 缓蚀除垢剂_循环水阻垢剂_反渗透锅炉阻垢剂_有机硫化物-郑州威大水处理材料有限公司 | 药品冷藏箱厂家_低温冰箱_洁净工作台-济南欧莱博电子商务有限公司官网 | 广西教师资格网-广西教师资格证考试网 | 高光谱相机-近红外高光谱相机厂家-高光谱成像仪-SINESPEC 赛斯拜克 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 | 高柔性拖链电缆-聚氨酯卷筒电缆-柔性屏蔽电缆厂家-玖泰电缆 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 优秀的临床医学知识库,临床知识库,医疗知识库,满足电子病历四级要求,免费试用 | 防火阀、排烟防火阀、电动防火阀产品生产销售商-德州凯亿空调设备有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 盐水蒸发器,水洗盐设备,冷凝结晶切片机,转鼓切片机,絮凝剂加药系统-无锡瑞司恩机械有限公司 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 发光字|标识设计|标牌制作|精神堡垒 - 江苏苏通广告有限公司 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 北京企业宣传片拍摄_公司宣传片制作-广告短视频制作_北京宣传片拍摄公司 | 碳纤维布-植筋胶-灌缝胶-固特嘉加固材料公司 | 布袋除尘器-单机除尘器-脉冲除尘器-泊头市兴天环保设备有限公司 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 软膜天花_软膜灯箱_首选乐创品牌_一站式天花软膜材料供应商! |