หลักคำสอน PHP createQueryBuilder อักขระพิเศษ

ฐานข้อมูลเก็บค่า "&คุณ" แต่แบบสอบถามด้านล่างไม่ส่งคืนผลลัพธ์

$buildQuery = $this->createQueryBuilder('r')
        ->where('r.TitreSearch LIKE :term')       
        ->setParameter('term', "%&You%")            
    ;

ในทางกลับกัน ถ้าฉันค้นหาคำว่า "คุณ" ฉันก็จะได้ผลลัพธ์

ทำไมหลักคำสอนไม่เข้าใจตัวอักษร "&" ?


person stloc    schedule 20.02.2018    source แหล่งที่มา


คำตอบ (1)


ปัญหาไม่ใช่อักขระเครื่องหมายและแต่เป็นปัญหาที่ตัวแบบสอบถามเอง

หากคุณต้องการให้ LIKE จับคู่รูปแบบ ภายใน ค่าของคอลัมน์ คุณต้องล้อมข้อความค้นหาด้วยเครื่องหมายเปอร์เซ็นต์ (เช่น %term%) หากไม่มีเครื่องหมายเปอร์เซ็นต์ LIKE จะทำหน้าที่เหมือนกับตัวดำเนินการ = มันค้นหาการจับคู่แบบตรงทั้งหมด

ลองดังต่อไปนี้:

$term = "&You";
$buildQuery = $this->createQueryBuilder('r')
        ->where('r.TitreSearch LIKE :term')
        ->setParameter('term', "%$term%");
person lxg    schedule 20.02.2018
comment
โอเค แต่ฉันรับรองได้เลยว่าหลักคำสอนไม่มีปัญหากับเครื่องหมายแอมเพอร์แซนด์เลย ฉันเพิ่งทดสอบในแอปพลิเคชันตัวหนึ่งของฉันเอง มันใช้งานได้กับไฟล์ อาจมีปัญหาอื่นเช่น เครื่องหมายแอมเปอร์แซนด์ถูกเข้ารหัส (URL-) หรือไม่ - person lxg; 20.02.2018
comment
จะอธิบายคำขอแรกในหน้านี้ด้วยสตริงตรง &คุณไม่ทำงานได้อย่างไร (ฐานข้อมูล SQLITE) - person stloc; 21.02.2018