แบบสอบถาม Mysqli: ค้นหาทั้งสองคอลัมน์เพื่อหาค่าหรือรวมกัน

ฉันกำลังอัปเดตเว็บไซต์ควอดคอปเตอร์และปรับปรุงระบบการค้นหาของฉัน ขณะนี้ผู้ใช้สามารถค้นหาด้วยรุ่น quadcopter เท่านั้น ตอนนี้ฉันกำลังปรับปรุงสิ่งนี้เล็กน้อยเพื่อให้ผู้ใช้สามารถค้นหาแบรนด์หรือรุ่นได้

ฉันต้องการให้ผู้ใช้สามารถพิมพ์แบรนด์และรุ่นลงในช่องค้นหา และอนุญาตให้มีการตรวจสอบทั้งสองคำระหว่างบันทึกในฐานข้อมูล

โดยพื้นฐานแล้วสมมติว่าแบรนด์ของ quadcopter คือ "DJI" และรุ่นคือ "Phantom" ในฐานข้อมูลของฉันอันหนึ่งจะถูกเก็บไว้ภายใต้แบรนด์ 'คอลัมน์' และอีกอันภายใต้ 'รุ่น' ฉันต้องการให้ผู้ใช้สามารถพิมพ์ 'dji phantom' และให้โมเดลปรากฏขึ้น

หากเป็นไปไม่ได้ มีวิธีใดที่จะทำให้ผลลัพธ์แสดงแม้ว่าจะไม่แม่นยำหรือไม่? ด้วยช่องค้นหาของฉันในขณะนี้ คุณสามารถค้นหาควอดคอปเตอร์ได้ตราบใดที่มีสตริงทั้งหมด ตัวอย่างเช่น 'plant' จะแสดง "DJI Phantom" ดังนั้น 'anton' ก็จะแสดง

นี่คือคำถามของฉัน:

$search = $_GET['search'];

$search_list = mysqli_query($conn,"SELECT * FROM quads WHERE model LIKE '%$search%' OR brand LIKE '%$search%'");

ป.ล. (ฉันรู้ว่ามันเสี่ยงต่อการฉีดยา นี่คือสิ่งที่ฉันกำลังแก้ไขในสัปดาห์นี้ ขอบคุณ)


person Bradley    schedule 14.11.2016    source แหล่งที่มา
comment
@JoseManuelAbarcaRodríguez ใช่หากมีการป้อนเฉพาะแบรนด์ quadcopter จะแสดงเหมือนกับว่าผู้ใช้ป้อนเฉพาะโมเดลเท่านั้น หากผู้ใช้ป้อนทั้งยี่ห้อและรุ่น เช่น 'dji phantom' ก็จะไม่แสดง   -  person Bradley    schedule 14.11.2016
comment
คุณจะรู้ได้อย่างไรว่าผู้ใช้ป้อนเฉพาะแบรนด์และไม่ใช่เฉพาะรุ่นเท่านั้น   -  person Jose Manuel Abarca Rodríguez    schedule 14.11.2016
comment
พอลองเข้าเว็บเอง ถ้าเข้า DJI quadcopter โชว์ แต่ถ้าเข้าทั้งยี่ห้อและรุ่นก็ไม่โชว์   -  person Bradley    schedule 14.11.2016
comment
DJI จะจับคู่แบรนด์ในขณะที่ Phantom จะจับคู่รุ่น แต่ DJI Phantom จะไม่จับคู่รุ่นหรือแบรนด์ คุณสามารถแยกข้อความค้นหาแล้วลองดูว่ามีการจับคู่ใน DB หรือไม่   -  person Maximus2012    schedule 14.11.2016
comment
@ Maximus2012 นี่คือสิ่งที่ฉันอยากทำ คุณได้อธิบายตามที่ฉันต้องการแล้ว ฉันใช้เวลาประมาณหนึ่งชั่วโมงในการดูสิ่งนี้ แต่ก็ไม่มีโชค   -  person Bradley    schedule 14.11.2016
comment
ลองใช้ CONCAT เพื่อเพิ่มเงื่อนไขการค้นหาอื่นเพิ่มเติมจากที่คุณมีอยู่แล้ว ? stackoverflow.com/questions/303679/ แม้ว่าจะใช้งานได้ แต่จะใช้งานได้เฉพาะบางกรณีเมื่อผู้ใช้ป้อนบางอย่างเช่น DJI Phantom แต่นั่นควรเป็นการเริ่มต้นที่ดี   -  person Maximus2012    schedule 14.11.2016
comment
@ Maximus2012 จริงๆ แล้ว มันสมบูรณ์แบบ เมื่อพวกเขาเข้าสู่ DJI Phantom สิ่งนี้แสดงให้เห็นแล้ว อีกสิ่งหนึ่งที่ต้องปรับปรุงให้ดียิ่งขึ้นไปอีก เป็นไปได้ไหมที่จะแสดง DJI Phantom ให้บอกว่ามีการสะกดผิดเหมือน DJI Phontom หรือเปล่า?   -  person Bradley    schedule 14.11.2016
comment
อันนั้นมันยุ่งยาก MySQL ไม่มีสิ่งใดในตัวเช่นนั้น ดังนั้นคุณอาจต้องเขียนอัลกอริทึมของคุณเอง หรือคุณอาจต้องการดู Lucene หรือ Elasticsearch เพื่อดูว่ามีคุณสมบัตินั้นหรือไม่ elastic.co/guide/en/elasticsearch/ อ้างอิง/ปัจจุบัน/ quora.com/   -  person Maximus2012    schedule 14.11.2016
comment
คล้ายกับ CONCAT แต่การวางงานในส่วนแทรกแทนที่จะเลือกคือการสร้างคอลัมน์ search_string ที่มีทั้งยี่ห้อและรุ่น และอาจเป็นหมายเลขซีเรียล บางครั้งฉันได้เห็นการเพิ่มการแข่งขันบางส่วนที่คาดหวังไว้เช่นกัน จากนั้น คุณยังสามารถ explode(' ', $search) ได้หากคุณต้องการทดสอบโทเค็นในสตริงการค้นหาอย่างอิสระ   -  person Jerry    schedule 14.11.2016