所以,我的数据库is_good
中有一个字段,输入boolean
。因此,如果我签入我的数据库,我可以在我的数据中看到TRUE
或FALSE
。
我使用Doctrine进行简单查询,只需检查my_table.is_good = $isgood
。
我有var_dump($isgood)
,我在这个变量中有一个布尔值。
当我执行我的查询时,我有这个错误(法语):
SQLSTATE[42883]: Undefined function: 7 ERREUR: l'opérateur n'existe pas : boolean = integer
错误消息中的查询显示:my_table.is_good = 1
我不能理解为什么我无法比较field = boolean
?
编辑:
这是我的第一个var_dump($isgood)
:
<pre class='xdebug-var-dump' dir='ltr'><small>boolean</small> <font color='#75507b'>true</font></pre>
我试着把'真实&#39;并且&#39; false&#39;在我的变量中,var_dump($isgood)
向我显示了一个字符串,查询就可以了。我不明白!
答案 0 :(得分:2)
如果要在查询中插入变量,则应使用预准备语句。在学说(使用本机查询)中,您可以使用NativeQuery
setParameter
函数:
<?php
use Doctrine\ORM\Query\ResultSetMapping;
$rsm = new ResultSetMapping();
// build rsm here
$sql = 'SELECT something FROM my_table WHERE my_table.is_good = ?';
$query = $entityManager->createNativeQuery($sql, $rsm);
$query->setParameter(1, $isgood);
$somethings = $query->getResult();
还有第三个参数可以显式设置参数的类型,但是会自动检测到布尔值。