พิจารณาสิ่งต่อไปนี้:
ปลั๊กอินของคุณใช้กับเครือข่าย wordpress ซึ่งใช้คำนำหน้าตารางที่แตกต่างกันสำหรับแต่ละไซต์ ปลั๊กอินของคุณอาจทำงานพร้อมกันในเว็บไซต์ต่าง ๆ 836 แห่งซึ่งอยู่ในฐานข้อมูลเดียวกัน wp_385677_liveshoutbox
เป็นชื่อตารางที่เหมาะสมอย่างสมบูรณ์
ปลั๊กอินของคุณถูกติดตั้งโดยผู้ใช้ที่มีแนวคิดเรื่องความปลอดภัยและได้เปลี่ยนคำนำหน้าตารางเพื่อบล็อกบอทที่พยายามแทรกselect * from wp_users
เข้าไปในระบบ แม้ว่าพวกเขาจะพบช่องโหว่ใหม่มันก็ไม่ทำงาน
การใช้ทางลัดเช่นชื่อตาราง hardcoding เป็นวิธีที่ดีในการทำให้ผลิตภัณฑ์ทำงานได้ แต่ไม่ใช่วิธีที่ดีในการเผยแพร่ ในช่วงเวลาสั้น ๆ ปลั๊กอินจะมีความคิดเห็นที่ "ไม่ทำงาน" อยู่ในกรณีที่เลวร้ายที่สุดคุณจะทำลายไซต์ของบุคคลอื่น
หากฉันมีข้อความค้นหาที่ซับซ้อนและฉันไม่ต้องการจัดการกับความเจ็บปวดในการเขียน'select foo from ' . $wpdb->prefix . '_mytable left join ' . $wpdb->prefix . '_mytablemeta on ' . $wpdb->prefix . '.ID = ' . $wpdb->prefix . '.meta_id ....
คุณสามารถใช้ replacers ได้ ตัวอย่างเช่น:
$query = 'select foo from %table% left join %meta% on %table%.ID = %meta%.meta_id ... ';
$change = array (
'%table%' => $wpdb->prefix . '_mytable',
'%meta%' => $wpdb->prefix . '_mytablemeta'
);
$sql = str_replace( array_keys( $change ), array_values( $change ), $query );
$results = $wpdb->get_results( $sql );
Wordpress เปลี่ยนแปลงอยู่ตลอดเวลา สิ่งที่ "ใช้งาน" ในวันนี้อาจไม่ทำงานในวันพรุ่งนี้ นั่นเป็นเหตุผลที่มีฟังก์ชั่น API นักพัฒนา Wordpress จะทำให้แน่ใจว่าพฤติกรรม API สาธารณะนั้นสอดคล้องกัน (หรือพวกเขาจะคิดค่าเสื่อมราคาของฟังก์ชัน) หากคุณเริ่มใช้การเรียกใช้วิธีการภายในเพราะ 'เร็วกว่าวิธีนั้น' มักจะกลับมากัดคุณ มีซอฟต์แวร์ช็อตคัทที่แท้จริงน้อยมาก - พวกเขาเพียงแค่ย้ายงานที่ต้องการจากนี้ไปสู่ในภายหลังและเช่นเดียวกับบัตรเครดิตของคุณ "ในภายหลัง" มักจะมีค่าใช้จ่ายมากขึ้น