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

<legend id='6X3mz'><style id='6X3mz'><dir id='6X3mz'><q id='6X3mz'></q></dir></style></legend>

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

    <small id='6X3mz'></small><noframes id='6X3mz'>

    1. 使用 PDO 轉義列名

      escaping column name with PDO(使用 PDO 轉義列名)
        <tbody id='af4A1'></tbody>

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

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

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

              1. <legend id='af4A1'><style id='af4A1'><dir id='af4A1'><q id='af4A1'></q></dir></style></legend>
              2. 本文介紹了使用 PDO 轉義列名的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                問題描述

                我有一個類似的功能

                function getInfoById($id, $info) {
                
                }
                

                這個想法是有一個查詢 "SELECT $info FROM table WHERE id = $id"

                the idea is to have a query be "SELECT $info FROM table WHERE id = $id"

                這不適用于 PDO,因為您無法對列名進行轉義.我也真的不想使用 "SELECT *" 因為這不會返回更大的結果集并使用更多內(nèi)存嗎?

                This doesn't work with PDO because you can't escape column names. I also don't really want to use "SELECT *" because doesn't that return a bigger result set and use more memory?

                推薦答案

                是的,PDO 沒有用于分隔標識符(如表名和列名)的內(nèi)置函數(shù).PDO::quote() 函數(shù)僅適用于字符串文字和日期文字.

                Yes, PDO does not have a builtin function for delimiting identifiers like table names and column names. The PDO::quote() function is only for string literals and date literals.

                無論如何,當我在 Zend Framework 上工作時,我實現(xiàn)了一個 quoteIdentifier() 函數(shù).

                For what it's worth, when I worked on Zend Framework, I implemented a quoteIdentifier() function.

                SELECT * 獲取所有列是對的,這可能會使用更多內(nèi)存并破壞覆蓋索引的好處.

                You're right that SELECT * fetches all columns, likely using more memory and spoiling the benefit of covering indexes.

                我的建議是將列名稱列入白名單.也就是說,確保 $info 實際上命名了 table 的一列.然后您無需擔心列名稱不存在,或包含奇怪字符或任何內(nèi)容.您可以控制可以合法放入查詢中的列集.

                My recommendation is to whitelist column names. That is, make sure $info actually names a column of table. Then you don't need to worry about the column name not existing, or containing a strange character, or anything. You get to control the set of columns that are legitimate to put in the query.

                無論如何,您還應該分隔列名稱.如果列名稱包含標點符號、空格、國際字符或匹配 SQL 保留字,則需要分隔標識符.請參閱不同的數(shù)據(jù)庫是否使用不同的名稱引用?

                You should also delimit the column name anyway. Delimited identifiers are necessary if the column name contains punctuation, whitespace, international characters, or matches an SQL reserved word. See Do different databases use different name quote?

                function getInfoById($id, $info) {
                    // you can make this a literal list, or query it from DESC or INFORMATION_SCHEMA
                    $cols = array('col1', 'col2', 'col3');
                
                    if (array_search($info, $cols) === false) {
                      return false;
                    }
                    $sql = "SELECT `$info` FROM table WHERE id = :id";
                    $stmt = $pdo->prepare($sql);
                    if ($stmt === false) {
                      return false;
                    }
                    . . .
                }
                

                我在演示文稿中展示了更多白名單示例 SQL 注入神話和謬論.

                I show more examples of whitelisting in my presentation SQL Injection Myths and Fallacies.

                這篇關于使用 PDO 轉義列名的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

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

                相關文檔推薦

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

                • <small id='dFItw'></small><noframes id='dFItw'>

                    • <bdo id='dFItw'></bdo><ul id='dFItw'></ul>
                          <tbody id='dFItw'></tbody>
                          <legend id='dFItw'><style id='dFItw'><dir id='dFItw'><q id='dFItw'></q></dir></style></legend>
                        • 主站蜘蛛池模板: 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | 无机纤维喷涂棉-喷涂棉施工工程-山东华泉建筑工程有限公司▲ | 河南包装袋厂家_河南真空袋批发价格_河南服装袋定制-恒源达包装制品 | 小型气象站_车载气象站_便携气象站-山东风途物联网 | 闪电优家-卫生间防水补漏_酒店漏水渗水维修_防水堵漏公司 | 拖鞋定制厂家-品牌拖鞋代加工厂-振扬实业中国高端拖鞋大型制造商 | 北京公积金代办/租房发票/租房备案-北京金鼎源公积金提取服务中心 | 生物颗粒燃烧机-生物质燃烧机-热风炉-生物颗粒蒸汽发生器-丽水市久凯能源设备有限公司 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 软启动器-上海能曼电气有限公司 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 便携式表面粗糙度仪-彩屏硬度计-分体式粗糙度仪-北京凯达科仪科技有限公司 | 全屋整木定制-橱柜,家具定制-四川峨眉山龙马木业有限公司 | 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 回收二手冲床_金丰旧冲床回收_协易冲床回收 - 大鑫机械设备 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 电梯乘运质量测试仪_电梯安全评估测试仪-武汉懿之刻 | 亮点云建站-网站建设制作平台| 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 合肥卓创建筑装饰,专业办公室装饰、商业空间装修与设计。 | 南京办公用品网-办公文具用品批发-打印机耗材采购 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 热处理温控箱,热处理控制箱厂家-吴江市兴达电热设备厂 | Maneurop/美优乐压缩机,活塞压缩机,型号规格,技术参数,尺寸图片,价格经销商 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 并离网逆变器_高频UPS电源定制_户用储能光伏逆变器厂家-深圳市索克新能源 | IP检测-检测您的IP质量 | 北京公寓出租网-北京酒店式公寓出租平台| 电解抛光加工_不锈钢电解抛光_常州安谱金属制品有限公司 | 【365公司转让网】公司求购|转让|资质买卖_股权转让交易平台 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 电梯乘运质量测试仪_电梯安全评估测试仪-武汉懿之刻 | 贴片电感_贴片功率电感_贴片绕线电感_深圳市百斯特电子有限公司 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 涂层测厚仪_漆膜仪_光学透过率仪_十大创新厂家-果欧电子科技公司 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 河南正规膏药生产厂家-膏药贴牌-膏药代加工-修康药业集团官网 | 万家财经_财经新闻_在线财经资讯网 |