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

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

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

    2. <small id='Pljyy'></small><noframes id='Pljyy'>

    3. 無法將內(nèi)爆數(shù)組綁定到 mysql 準備好的語句中

      Trouble binding an imploded array into a mysql prepared statement(無法將內(nèi)爆數(shù)組綁定到 mysql 準備好的語句中)

        <bdo id='wMKja'></bdo><ul id='wMKja'></ul>

          <tbody id='wMKja'></tbody>

          • <tfoot id='wMKja'></tfoot>

              <i id='wMKja'><tr id='wMKja'><dt id='wMKja'><q id='wMKja'><span id='wMKja'><b id='wMKja'><form id='wMKja'><ins id='wMKja'></ins><ul id='wMKja'></ul><sub id='wMKja'></sub></form><legend id='wMKja'></legend><bdo id='wMKja'><pre id='wMKja'><center id='wMKja'></center></pre></bdo></b><th id='wMKja'></th></span></q></dt></tr></i><div class="02ia2e2" id='wMKja'><tfoot id='wMKja'></tfoot><dl id='wMKja'><fieldset id='wMKja'></fieldset></dl></div>
              <legend id='wMKja'><style id='wMKja'><dir id='wMKja'><q id='wMKja'></q></dir></style></legend>
              1. <small id='wMKja'></small><noframes id='wMKja'>

              2. 本文介紹了無法將內(nèi)爆數(shù)組綁定到 mysql 準備好的語句中的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                問題描述

                我對以下語法錯誤感到頭疼.我正在嘗試將內(nèi)爆數(shù)組綁定到準備好的語句中,但出現(xiàn)以下語法錯誤:

                I am beating my head over the below syntax error. I am trying to bind an imploded array into a prepared statement, but I am getting the following syntax error:

                您的 SQL 語法有錯誤;檢查與您的 MySQL 服務器版本相對應的手冊,了解在?"附近使用的正確語法.在第 1 行

                這是我的代碼.誰能看出我哪里出錯了?

                Here is my code. Can anyone see where I am going wrong?

                <?php 
                include('config.php');
                
                $selected = $_POST['selected'];
                
                if ($stmt = $mysqli->prepare("DELETE FROM email_addresses WHERE email_addresses IN ?")) {
                
                    $stmt->bind_param("s", "('" . implode("', '", $selected) . "')" );
                
                    $stmt->execute();
                
                    $stmt->close();
                
                    print "ok";
                
                } else {
                    print $mysqli->error;
                }
                
                $mysqli->close();
                
                ?>
                

                作為測試,我嘗試了:

                print "('" . implode("', '", $selected) . "')";
                

                哪個正確地給了我

                ('me@me.com', 'you@you.com')
                

                推薦答案

                讓我為您省去一些麻煩并告訴您您嘗試做的事情無論如何都行不通.您只將一個參數(shù)綁定到您的 IN() 函數(shù)調(diào)用.您認為您正在傳遞一個逗號分隔的列表,但實際上您只傳遞了一個逗號分隔的字符串,該字符串被視為一個值.這意味著您將搜索具有'me@me.com'、'you@you.com'"值的一條記錄,而不是與me@me.com"匹配的記錄或you@you.com".

                Let me save you some trouble and tell you what you're trying to do won't work anyway. You are only binding one parameter to your IN() function call. You think you're passing a comma separated list but you are actually only passing a comma separated string which is treated as one value. This means you will be search for one record with a value of "'me@me.com', 'you@you.com'" instead of records that match "me@me.com" or "you@you.com".

                要克服這個問題,您需要:

                To overcome this you need to:

                1. 動態(tài)生成類型字符串
                2. 使用call_user_func_array()綁定你的參數(shù)

                您可以像這樣生成類型字符串:

                You can generate the types string like this:

                $types = str_repeat('s', count($selected));
                

                所有這些都是創(chuàng)建一個 s 的字符串,它的字符數(shù)與數(shù)組中的元素數(shù)一樣多.

                All this does is create a string of s's that is as many characters as the number of elements in the array.

                然后你可以像這樣使用 call_user_func_array() 綁定你的參數(shù)(注意我把括號放回 IN() 函數(shù)):

                You would then bind your parameters using call_user_func_array() like this (notice I put the parenthesis back in for the IN() function):

                if ($stmt = $mysqli->prepare("DELETE FROM email_addresses WHERE email_addresses IN (?)")) {
                    call_user_func_array(array($stmt, "bind_param"), array_merge($types, $selected));
                

                但是如果你嘗試這個你會得到一個關于 mysqli_stmt::bind_param() 期望參數(shù)二通過引用傳遞的錯誤:

                But if you try this you will get an error about mysqli_stmt::bind_param() expecting parameter two to be passed by reference:

                警告:mysqli_stmt::bind_param() 的參數(shù) 2 應為引用,已給定值

                Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given

                這有點煩人,但很容易解決.要解決此問題,您可以使用以下函數(shù):

                This is kind of annoying but easy enough to work around. To work around that you can use the following function:

                function refValues($arr){ 
                    $refs = array(); 
                    foreach($arr as $key => $value) 
                        $refs[$key] = &$arr[$key]; 
                    return $refs; 
                } 
                

                它只是創(chuàng)建一個值數(shù)組,這些值是對 $selected 數(shù)組中值的引用.這足以讓 mysqli_stmt::bind_param() 開心:

                It just creates an array of values that are references to the values in the $selected array. This is enough to make mysqli_stmt::bind_param() happy:

                if ($stmt = $mysqli->prepare("DELETE FROM email_addresses WHERE email_addresses IN (?)")) {
                    call_user_func_array(array($stmt, "bind_param"), array_merge($types, refValues($selected)));
                

                編輯

                從 PHP 5.6 開始,您現(xiàn)在可以使用 ... 運算符來使這更簡單:

                As of PHP 5.6 you can now use the ... operator to make this even simpler:

                $stmt->bind_param($types, ...$selected);
                

                這篇關于無法將內(nèi)爆數(shù)組綁定到 mysql 準備好的語句中的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

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

                相關文檔推薦

                store_result() and get_result() in mysql returns false(mysql 中的 store_result() 和 get_result() 返回 false)
                Call to undefined function mysqli_result::num_rows()(調(diào)用未定義的函數(shù) mysqli_result::num_rows())
                PHP Prepared Statement Problems(PHP 準備好的語句問題)
                mysqli_fetch_array returning only one result(mysqli_fetch_array 只返回一個結果)
                PHP MySQLi Multiple Inserts(PHP MySQLi 多次插入)
                How do I make sure that values from MySQL keep their type in PHP?(如何確保 MySQL 中的值在 PHP 中保持其類型?)
                <i id='zrQro'><tr id='zrQro'><dt id='zrQro'><q id='zrQro'><span id='zrQro'><b id='zrQro'><form id='zrQro'><ins id='zrQro'></ins><ul id='zrQro'></ul><sub id='zrQro'></sub></form><legend id='zrQro'></legend><bdo id='zrQro'><pre id='zrQro'><center id='zrQro'></center></pre></bdo></b><th id='zrQro'></th></span></q></dt></tr></i><div class="ukweauo" id='zrQro'><tfoot id='zrQro'></tfoot><dl id='zrQro'><fieldset id='zrQro'></fieldset></dl></div>

                <tfoot id='zrQro'></tfoot>

                      <tbody id='zrQro'></tbody>

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

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

                        1. 主站蜘蛛池模板: 滁州高低温冲击试验箱厂家_安徽高低温试验箱价格|安徽希尔伯特 | 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 | 电竞馆加盟,沈阳网吧加盟费用选择嘉棋电竞_售后服务一体化 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | 纯水设备_苏州皙全超纯水设备水处理设备生产厂家 | 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 山西3A认证|太原AAA信用认证|投标AAA信用证书-山西AAA企业信用评级网 | 天津电机维修|水泵维修-天津晟佳机电设备有限公司 | 七维官网-水性工业漆_轨道交通涂料_钢结构漆 | ORP控制器_ORP电极价格-上优泰百科| 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | elisa试剂盒-PCR试剂盒「上海谷研实业有限公司」| 振动传感器,检波器-威海广达勘探仪器有限公司 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 外贸资讯网 - 洞悉全球贸易,把握市场先机| 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | 层流手术室净化装修-检验科ICU改造施工-华锐净化工程-特殊科室建设厂家 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 大倾角皮带机-皮带输送机-螺旋输送机-矿用皮带输送机价格厂家-河南坤威机械 | 喷砂机厂家_自动喷砂机生产_新瑞自动化喷砂除锈设备 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 百方网-百方电气网,电工电气行业专业的B2B电子商务平台 | LED显示屏_LED屏方案设计精准报价专业安装丨四川诺显科技 | 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 溶氧传感器-pH传感器|哈美顿(hamilton) | 金属回收_废铜废铁回收_边角料回收_废不锈钢回收_废旧电缆线回收-广东益夫金属回收公司 | 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 钢制拖链生产厂家-全封闭钢制拖链-能源钢铝拖链-工程塑料拖链-河北汉洋机械制造有限公司 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 |