国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > Wordpress > 正文

WordPress 3.5 與 wpdb::prepare() 報錯解決辦法

2024-09-07 00:48:47
字體:
來源:轉載
供稿:網友

WordPress 3.5 正式發布, 這個版本包括大量更新. 啟用了最新的響應式布局默認主題 Twenty Twelve; 改版了 Admin 界面, 更加簡潔而且針對移動設備進行了優化; Media 功能也得到極大的提高, 現在更加沒有理由使用其他圖床服務了.

好話說完了, 是時候 "但是" 了. 但是... WordPress 秉承一貫的作風, 也偷偷改了一些內部方法, 現在 wpdb::prepare() 必須填入第二個參數, 否則報錯如下.

Warning: Missing argument 2 for wpdb::prepare(), called in xxx.php on line 75 and defined in /www/wp-includes/wp-db.php on line 990

wpdb->prepare() 方法在 WordPress 3.5 中報錯

wpdb::prepare() 的第二個參數

從技術上 WordPress 這樣修改 prepare 并沒有錯, 因為這是用來組裝 SQL 語句的方法, 按常理來說必須有帶變量的字符串作為第一個參數和第二個作為變量的參數, 這是為了避免 SQL 注入所引起的安全問題. 但是 WordPress 從 2.2 或者更早版本允許了忽略第二個參數的寫法, 現在突然令第二個參數成為必填, 必然導致很多主題和插件不能正常使用.

我發布的所有 WordPress 主題和最新評論插件 WP-RecentComments 都中槍了. 感謝 neoner 提醒, 半個月前我更新 WP-RecentComments 解決了這個問題, 但還沒有時間改主題, 因為主題審核太麻煩了.

解決辦法

在更新主題之前, 我先在這里說說解決辦法, 讓用戶們自己可以先解決一下, 相信還有其他主題或者插件可能也會有類似問題, 希望對大家有幫助.

    我們需要先定位出現問題的文件和代碼. PHP 的代碼報錯很精準的, 打開報錯提醒中的文件 (前一個文件, 不是 wp-db.php), 找到代碼 $wpdb->prepare.為該方法添加一個空串作為第二個參數, 比如: $wpdb->prepare('xxx'); 改為 $wpdb->prepare('xxx', ''); 即可.
總結

WordPress 也不是第一次偷偷修改方法調用方式了, WordPress 2.7 的時候也要求 comments_template 必須輸入第二個方法, 但是當時是為了擴展功能, 這次我真的不解. 除了安全考慮, WordPress 也可能有意淘汰一些不積極更新的主題, 我的主題明明向后兼容做得很好的, 實在太沒節操了.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐池县| 济阳县| 隆回县| 囊谦县| 汤原县| 翁源县| 鄂托克前旗| 天津市| 招远市| 高安市| 安溪县| 博野县| 柳河县| 赤城县| 隆子县| 禹城市| 台南市| 邓州市| 元江| 岳阳市| 沙河市| 安吉县| 离岛区| 临潭县| 辽阳县| 天长市| 宁津县| 招远市| 宜君县| 吕梁市| 湘潭市| 奉新县| 荃湾区| 莱阳市| 稻城县| 四会市| 新乐市| 蕉岭县| 缙云县| 原平市| 高台县|