1

そうです:

    $text = '%'.addslashes($text).'%';


    $images = $this->getDoctrine()->getEntityManager()
        ->createQuery("SELECT img, cat, u
                       FROM AcmeMainBundle:Image img
                       JOIN img.category cat
                       JOIN img.user u
                       WHERE img.title LIKE '$text' OR img.description LIKE '$text'
                       ORDER BY img.id DESC")
        ->getResult();  

$textに'が含まれている場合はエラーがスローされます

[構文エラー]行0、列150:エラー:文字列の終わりが必要です。「T」500内部サーバーエラーが発生しました-QueryException

それを修正する方法は?

4

1 に答える 1

1
   $images = $this->getDoctrine()->getEntityManager()
        ->createQuery("SELECT img, cat, u
                       FROM AcmeMainBundle:Image img
                       JOIN img.category cat
                       JOIN img.user u
                       WHERE img.title LIKE :text OR img.description LIKE :text
                       ORDER BY img.id DESC")
        ->setParameter('text', $text)
        ->getResult();

またはこれを試してください:

   $text = "%".$text."%";
   $images = $this->getDoctrine()->getEntityManager()
        ->createQueryBuilder()
        ->select(array('img','cat','u'))
        ->from('AcmeMainBundle:Image', 'img')
        ->innerJoin('img.category', 'cat')
        ->innerJoin('img.user', 'u')
        ->where('img.title LIKE :title OR img.description LIKE :description')
        ->orderBy('img.id','DESC')
        ->setParameter('title', $title)
        ->setParameter('description', $title)
        ->getResult();
于 2012-01-18T09:09:22.753 に答える