我想知道是否有一些方法可以将一个准备好的语句放入Zend Database类中,然后使用它而不是->select()
,->from()
,->where()
。我刚刚在->query()
尝试了以下查询但是没有。我只问因为我发现的所有参考资料,即使在zend docs中也只对mysqli说话。我发现数据库类对于更复杂的查询非常烦人(即使那时真的不那么复杂)。
我有这个查询
SELECT
org.orgid,
org.roleid,
users.userid,
users.email,
users.firstname,
users.lastname,
users.contact,
users.state,
users.ts,
users.alternate_delivery_email,
users.unbound,
users.blocked
FROM my_mapping AS org
INNER JOIN my_users AS users ON org.userid = users.userid
WHERE (org.orgid = 'generated-id')
AND (org.roleid::text LIKE 'partner-%');
我一直在努力使其符合匹配的zend DB版本
$select = $db->select()
->from(array('org' => 'my_mapping'),
array(
'orgid' => 'org.orgid',
'roleid' =>'org.roleid',
'userid' =>'users.userid',
'email' =>'users.email',
'firstname' =>'users.firstname',
'lastname' =>'users.lastname',
'contact' =>'users.contact',
'state' =>'users.state',
'ts' =>'users.ts',
'alternate_delivery_email' =>'users.alternate_delivery_email',
'unbound' =>'users.unbound',
'blocked' =>'users.blocked'
))
->join(array('my_users' => 'users'),'org.userid = users.userid',array())
->where('org.orgid = ?',$mspID)
->where('org.roleid::text LIKE ?', 'partner-%');
除了问题,这给了我什么。无论我尝试将其改为工作方式。然而,进入终端并使用直接查询工作正常,我得到结果和其他一切。因此,我开始查看是否可以找到一种方法来使用传递给Zend DB类的精确查询,因此我可以使用输出,就像我实际使用Zend DB类的查询一样。但是我在那个庄园找到的所有引用都是特定于mysql或mysqli的,所以我不确定它是否会起作用,如果它将如何将它串在一起呢?
另外值得一提的是“org.roleid”是一个“enum”,因此::text
,同时roleid和userid是“uuid”。
我得到的错误是:
Warning: PDO::quote() expects parameter 1 to be string, object given in ........ on line ...
SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at end of input LINE 1: SELECT "my_users".* FROM "my_users" WHERE ( ^
答案 0 :(得分:0)
您需要使用Zend_Db_Statement在Zend Framework中执行预准备语句 - http://framework.zend.com/manual/1.12/en/zend.db.statement.html
此外,这是另一个讨论相同的stackoverflow线程 - How to use prepared statements in Zend Framework