【问题标题】:Codeigniter SQL query does stop runningCodeigniter SQL 查询确实停止运行
【发布时间】:2014-10-26 08:27:42
【问题描述】:

对于我的项目,我们使用 SQL 2008 连接。到目前为止,这工作得很好。查询停止运行而没有给出 db 或 PHP 错误。这对我来说很奇怪。我做的模型函数是:

function getTankDataByYear($year,$flexxis_tabel){                   

    $querytext = "
    SELECT  
        deduction.[Taxation code] AS deduction,
        costkindfuel.[Fuel Type] AS fueltype,
        leasecar.[Fuel Tank Volume] AS tankvolume,          
        leasecardriver.[License] AS kenteken,                                   
        leasecardriver.[Driver Code] AS personeelsnummer,       
        fuel.[Perpetration Date] AS dates,
        fuel.[Perpetration Time] AS times,
        fuel.[Perpetration Date] AS tankdatum,
        fuel.[Volume liters] AS liters,
        fuel.[License No_] AS pk1,
        fuel.[Perpetration Date] AS pk2,
        fuel.[Perpetration Time] AS pk3,        
        fuel.[Costkind lease company] AS pk4,
        fuel.[KM Reliable] AS kmreliable,
        fuel.[Replacement Transport] AS vervangendvervoer,
        fuel.[High Way] AS snelweg
    FROM [".$flexxis_tabel."\$Fuel Table] AS fuel                                                                   
    LEFT JOIN [".$flexxis_tabel."\$Lease Car Driver] AS leasecardriver ON leasecardriver.[License] = fuel.[License No_]
    LEFT JOIN [".$flexxis_tabel."\$Lease Car] AS leasecar ON leasecar.[License No_] = leasecardriver.[License]
    LEFT JOIN [Costkind Fuel] AS costkindfuel ON costkindfuel.[Costkind Fuel] = fuel.[Costkind lease company]
    LEFT JOIN [".$flexxis_tabel."\$Deduction table] AS deduction ON deduction.[Driver code] = leasecardriver.[Driver Code]
        AND (YEAR(Deduction.[Ending Date]) >= '".$year."' 
        OR YEAR(Deduction.[Ending Date]) = '1753')
        AND YEAR(Deduction.[Starting Date]) <= '".$year."'      
    WHERE YEAR(fuel.[Perpetration Date]) = '".$year."'
    ";

    $query = $this->db->query($querytext)->result();
    return $query;
}   

$flexxis_tabel 是公司名称。

当我直接在 SQL 数据库中运行此查询时,它运行良好。找到所有连接 并且选择数据被正确填充。但是当我在 Codeigniter 中运行这个查询时 PHP 脚本像死机一样停止工作。

当我查看 Codeigniter 的核心时,它在调用此核心函数时停止运行: 系统/数据库/驱动程序/mssql_result.php

/**
 * Result - object
 *
 * Returns the result set as an object
 *
 * @access  private
 * @return  object
 */
function _fetch_object()
{
    return mssql_fetch_object($this->result_id);
}

这是一个 Codeigniter 错误吗?我可以尝试做什么?

附:删除 select 的前五行时,查询运行良好,但我需要这些字段,并且根据 SQL 程序连接是正常的..

行:

    leasecar.[Fuel Tank Volume] AS tankvolume,  
    deduction.[Taxation code] AS deduction,
    costkindfuel.[Fuel Type] AS fueltype,
    leasecar.[Fuel Tank Volume] AS tankvolume,          
    leasecardriver.[License] AS kenteken,                                   
    leasecardriver.[Driver Code] AS personeelsnummer,   

-- 编辑-- 我正在使用来自 GitHub 的 Codeigniter 2.2 最新版本。

【问题讨论】:

  • codeigniter error log有什么有用的吗?
  • 不,抱歉。 Codeigniter 日志保持为空..
  • 嗨@JelleP 你找到答案了吗?因为我也有同样的问题。

标签: php sql codeigniter


【解决方案1】:

您有两个不同的列,别名为 AS tankvolume。 MSSQL 不关心(这就是为什么在 sqlcmd 或 ssms 中执行查询时可以正常工作的原因),但 PHP 不关心,因为它不知道将哪些值分配给 -&gt;tankvolume 属性。尝试重命名其中一个。

或者,因为在这种特殊情况下,它是同一列两次,只需删除此列的第二个副本:

 leasecar.[Fuel Tank Volume] AS tankvolume, 

【讨论】:

  • 嘿,丹,谢谢你的想法!但在我的情况下没有帮助。我删除了双重的,但查询仍然停止运行..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-14
相关资源
最近更新 更多