gpt4 book ai didi

php - 未正确检索数据库查询

转载 作者:行者123 更新时间:2023-11-29 00:23:33 26 4
gpt4 key购买 nike

我正在使用 zend 框架和我的 sql 来显示一些数据。

查询如下:

    $table = new Timesheets_Table_Tasks();
$select = $table->select(true)
->setIntegrityCheck(false)
->join('timesheets_projects', 'timesheets_projects.ID=timesheets_tasks.ProjectID', array())
->join('timesheets_clients', 'timesheets_clients.ID=timesheets_projects.ClientID', array())


return $this->filterSelect($select);

函数filterSelect如下:

protected function filterSelect($select)
{
$select->where("timesheets_tasks.UserID=?", Zend_Auth::getInstance()->getIdentity()->id);
foreach($this->_filters as $filter => $value)
{
if(($value == "" || $value == "none") && $filter != "status")
{
continue;
}

switch($filter)
{
case 'q':
$select->where($this->_db->quoteInto('timesheets_tasks.Comment LIKE ?', '%' . $value . '%'));
break;
case 'after':
$select->where($this->_db->quoteInto('timesheets_tasks.Date >= UNIX_TIMESTAMP(STR_TO_DATE(?, "%d/%m/%Y"))', $value));
break;
case 'before':
$select->where($this->_db->quoteInto('timesheets_tasks.Date <= UNIX_TIMESTAMP(STR_TO_DATE(?, "%d/%m/%Y"))', $value));
break;
case 'client':
$select->where($this->_db->quoteInto('timesheets_clients.ID = ?', $value));
break;
case 'project':
$select->where($this->_db->quoteInto('timesheets_tasks.ProjectID = ?', $value));
break;
case 'status':
$select->where($this->_db->quoteInto('timesheets_tasks.Status = ?', $value));
break;
case 'jobtype':
$select->where($this->_db->quoteInto('timesheets_tasks.TypeID = ?', $value));
break;
}
}

return $select;
}

我显示了查询,它显示为:

SELECT timesheets_tasks。* FROM timesheets_tasks INNER JOIN timesheets_projects ON timesheets_projects.ID=timesheets_tasks.ProjectID INNER JOIN timesheets_clients 在 timesheets_clients.ID=timesheets_projects.ClientID WHERE (timesheets_tasks.UserID='33') AND (timesheets_tasks.Status = 0) ORDER BY date DESC

但是查询没有给出实际数据。

我认为这是连接表的问题。当我从查询中删除“->join('timesheets_clients', 'timesheets_clients.ID=timesheets_projects.ClientID', array())”行时,输出显示正确。但我也必须从其他两个表中选择一些字段。所以我需要一个 join 属性。我可以使用任何其他连接从其他两个表中获取列值并获得正确的输出吗?

我是新加入的。任何帮助都应该受到赞赏!

最佳答案

可以帮你解决

  $table = new Timesheets_Table_Tasks();
$select = $table->select(true)
->setIntegrityCheck(false)
->joinLeft('timesheets_projects', 'timesheets_projects.ID=timesheets_tasks.ProjectID', array())
->joinLeft('timesheets_clients', 'timesheets_clients.ID=timesheets_projects.ClientID', array())


return $this->filterSelect($select)

另外请用 echo 检查你的 select 语句和 join

希望这对你有用。

关于php - 未正确检索数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20137327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com