Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Zend PHP框架中执行内部联接_Php_Mysql_Zend Framework_Zend Db - Fatal编程技术网

在Zend PHP框架中执行内部联接

在Zend PHP框架中执行内部联接,php,mysql,zend-framework,zend-db,Php,Mysql,Zend Framework,Zend Db,我想在两个表上执行内部联接 表A- 项目编号 项目名称 瓦克斯 表B- 项目编号 变化 萨默瓦尔 这就是我如何使用原始SQL查询完成的 $sql = 'SELECT tableA.item_id, tableY.item_title AS Name, 5 * varX + 5 * count(*) AS myScore FROM tableA INNER JOIN tableY ON tableA.item_id=tableY.item_id WHERE someVar=\'8\' G

我想在两个表上执行内部联接

表A-

项目编号

项目名称

瓦克斯

表B-

项目编号

变化

萨默瓦尔

这就是我如何使用原始SQL查询完成的

$sql = 'SELECT tableA.item_id, tableY.item_title AS Name, 5 * varX +  5 * count(*) AS myScore 
FROM tableA 
INNER JOIN tableY ON tableA.item_id=tableY.item_id 
WHERE someVar=\'8\' 
GROUP BY item_id
ORDER BY myScore DESC
LIMIT 10';
$stmt = $this->_db->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll();
现在我想使用Zend查询来实现这一点

这就是我写的-

$data = $this->_db->select()
->from(array('tablA'=>'tableA'), array('item_id', 'item_title'), 'myScore'=>'(5*'tableA'.'varX') + 5*count(*)')
->joinInner(array('tablB'=>'tableB'), 'tablA'.'item_id' = 'tablB'.'item_id')
->where('someVar = 8')
->GROUP('item_id')
->order('myScore DESC')
->limit(10);

$dataResult = $this->_db->fetchAll($data);
但我得到了这个错误-

 syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ')'
行->从(数组('tablA'=>'tableA')、数组('item_id','item_title')、'myScore'=>'(5'tableA'.'varX')+5*count())


我不知道在这里该做什么,因为我已经阅读了官方文档,但仍然无法理解这一点。感谢您的帮助

您的代码中引用的方式错误。另外,tt看起来像是,您对
'myScore'
字段使用了不必要的第三个参数。应将其置于第二个参数中
尝试以下操作:

...
$data = $this->_db->select()
->from(array('tablA'=>'tableA'), array('item_id', 'item_title', 'myScore'=>'(5 * tableA.varX) + 5*count(*)'))
->joinInner(array('tablB'=>'tableB'), 'tablA.item_id = tablB.item_id')
->where('someVar = 8')
->group('tablA.item_id')
->order('myScore DESC')
->limit(10);

您使用哪一个Zend Framework版本?版本1.12.3。@Chautobot,关于不必要的第三个参数。查看我的更新当我得到这个时,解析错误:语法错误,意外的“=”,在第->行中应为“,”或“)”->joinInner(数组('tablB'=>'tableB'),'tablA.item_id=tablB.item_id')可能缺少一个括号。请重试上次更新的版本。我已经用括号试过了,还是一样的错误。试图找出实际的问题是什么。奇怪的是,乍一看,该代码片段中没有其他语法错误