我想運行這個學說查詢生成器查詢:爲什麼「SQLSTATE [42000]:語法錯誤或訪問衝突」?
$repository = $this->getDoctrine()->getRepository('MyBundle:Usage');
$usage_q = $repository->createQueryBuilder('u')->where('u.var = \'warranty\'');
$usage_result = $usage_q->getQuery()->getSingleResult();
但我總是得到:
SQLSTATE [42000]:語法錯誤或訪問衝突1064您的SQL錯誤句法;檢查對應於你的MySQL服務器版本正確的語法使用近「用法u0_ WHERE u0_.var =‘三包’」在1號線
手動這是我使用的實體:
<?php
namespace Herbanist\AdminBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Usage
*
* @ORM\Table()
* @ORM\Entity
*/
class Usage
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="var", type="string", length=20)
*/
private $var;
/**
* @var string
*
* @ORM\Column(name="value", type="text")
*/
private $value;
public function getId()
{
return $this->id;
}
public function setVar($var)
{
$this->var = $var;
return $this;
}
public function getVar()
{
return $this->var;
}
public function setValue($value)
{
$this->value = $value;
return $this;
}
public function getValue()
{
return $this->value;
}
}
用法表:
mysql> select * from `Usage`;
+----+----------+-------+
| id | var | value |
+----+----------+-------+
| 1 | warranty | 0 |
+----+----------+-------+
我試着用參數,我得到這個:'執行時出現異常'SELECT u0_.id AS id0,u0_.var AS var1,u0_.value AS value2 FROM Usage u0_ WHERE u0_.var =?'帶有參數[「保修」]: SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到在第1行使用u0_ WHERE u0_.var ='warranty'附近使用的正確語法' –
如果我嘗試簡單SQL查詢'SELECT value FROM \'Usage \'WHERE \'var \'='保修';' - 它的工作原理。但我不明白爲什麼QueryBuilder返回錯誤。 –