เมื่อเขียนการสร้างหน้าใน PHP ฉันมักจะพบว่าตัวเองกำลังเขียนไฟล์ที่เกลื่อนไปด้วยแบบสอบถามฐานข้อมูล ตัวอย่างเช่นฉันอาจมีแบบสอบถามเพื่อดึงข้อมูลบางอย่างเกี่ยวกับการโพสต์โดยตรงจากฐานข้อมูลเพื่อแสดงบนหน้าเช่นนี้:
$statement = $db->prepare('SELECT * FROM posts WHERE id=:id');
$statement->bindValue(':id', $id, PDO::PARAM_INT);
$statement->execute();
$post = $statement->fetch(PDO::FETCH_ASSOC);
$content = $post['content']
// do something with the content
ข้อความค้นหาแบบครั้งเดียวที่รวดเร็วเหล่านี้มักจะเล็ก แต่บางครั้งฉันก็ลงท้ายด้วยรหัสการโต้ตอบของฐานข้อมูลขนาดใหญ่ซึ่งเริ่มดูยุ่งเหยิง
ในบางกรณีฉันได้แก้ไขปัญหานี้ด้วยการสร้างไลบรารีฟังก์ชันที่ใช้งานง่ายเพื่อจัดการคิวรี db ที่เกี่ยวข้องกับการโพสต์ของฉันทำให้บล็อกโค้ดนั้นสั้นลงง่ายๆ
$content = post_get_content($id);
และนั่นก็ยอดเยี่ยม หรืออย่างน้อยก็จนกว่าฉันจะต้องทำอย่างอื่น บางทีฉันอาจต้องได้รับห้าโพสต์ล่าสุดเพื่อแสดงในรายการ ฉันสามารถเพิ่มฟังก์ชั่นอื่นได้เสมอ:
$recent_posts = post_get_recent(5);
foreach ($recent_posts as $post) { ... }
แต่นั่นก็จบลงด้วยการใช้SELECT *
แบบสอบถามซึ่งโดยปกติฉันไม่ต้องการอะไรมากนัก แต่มักจะซับซ้อนเกินกว่าจะสรุปได้พอสมควร ในที่สุดฉันก็จบลงด้วยห้องสมุดขนาดใหญ่ของฟังก์ชั่นการโต้ตอบฐานข้อมูลสำหรับทุกกรณีการใช้งานหรือชุดของแบบสอบถามที่ยุ่งเหยิงภายในโค้ดของทุกหน้า และแม้กระทั่งเมื่อฉันสร้างห้องสมุดเหล่านี้ฉันจะพบว่าตัวเองต้องเข้าร่วมกลุ่มเล็ก ๆ ที่ฉันไม่เคยใช้มาก่อนและฉันก็จำเป็นต้องเขียนฟังก์ชั่นพิเศษอื่น ๆ เพื่อทำงาน
แน่นอนว่าฉันสามารถใช้ฟังก์ชั่นสำหรับกรณีการใช้งานทั่วไปและแบบสอบถามสำหรับการโต้ตอบเฉพาะ แต่ทันทีที่ฉันเริ่มเขียนแบบสอบถามแบบดิบฉันจะเริ่มย้อนกลับไปใช้การเข้าถึงโดยตรงสำหรับทุกสิ่ง ไม่เช่นนั้นหรือฉันจะขี้เกียจและจะเริ่มทำสิ่งต่าง ๆ ในลูป PHP ที่ควรจะทำโดยตรงในแบบสอบถาม MySQL ต่อไป
ฉันอยากจะขอให้ผู้ที่มีประสบการณ์เกี่ยวกับการเขียนแอปพลิเคชันอินเทอร์เน็ตมากขึ้น: การเพิ่มความสามารถในการบำรุงรักษานั้นคุ้มค่ากับโค้ดพิเศษและความไร้ประสิทธิภาพที่เป็นไปได้ หรือเพียงแค่ใช้สตริงคำสั่งโดยตรงเป็นวิธีที่ยอมรับได้สำหรับจัดการกับการโต้ตอบของฐานข้อมูล?
select
- s คุณจะต้องเรียกขั้นตอนดังกล่าวด้วยพารามิเตอร์บางอย่างที่คุณต้องการ