【问题标题】:how can I solve a issue with andWhere with symfony/doctrine and odbc?我如何使用 symfony/doctrine 和 odbc 解决 andWhere 的问题?
【发布时间】:2010-05-18 22:39:06
【问题描述】:

在学习 symfony 教程 (1.4.4) 时,我遇到 ODBC/mssql 2008 错误。

SQLSTATE[07002]:COUNT 字段不正确:0 [Microsoft][SQL Server Native Client 10.0]COUNT 字段不正确或语法错误 (在 ext\pdo_odbc\odbc_stmt.c:254 处的 SQLExecute[0])。查询失败: “选择 [j].[id] AS [j__id], [j].[category_id] AS [j__category_id], [j].[type] AS [j__type], [j].[company] AS [j__company], [j].[logo] AS [j__logo], [j].[url] AS [j__url], [j].[position] AS [j__position], [j].[location] AS [j__location], [j].[description] AS [j__description], [j].[how_to_apply] AS [j__how_to_apply], [j].[token] AS [j__token], [j].[is_public] AS [j__is_public], [j].[is_activated] AS [j__is_activated], [j].[email] AS [j__email], [j].[expires_at] AS [j__expires_at], [j].[created_at] AS [j__created_at], [j].[updated_at] AS [j__updated_at] FROM [jobeet_job] [j] WHERE ([j].[category_id] = '2' AND [j].[expires_at] > ?) ORDER BY [j].[expires_at] DESC"

我已将问题缩小到使用参数的行 public function getActiveJobs(Doctrine_Query $q = null) { if (is_null($q)) { $q = Doctrine_Query::create() ->from('JobeetJob j'); }

    //$q->andWhere('j.expires_at > \''.date('Y-m-d H:i:s', time()).'\'');<-- this works
    $q->andWhere('j.expires_at > ?', date('Y-m-d H:i:s', time())); //<-- this line has problem
    $q->addOrderBy('j.expires_at DESC');

    return $q->execute();
}

谁能指出我正确的方向? 谢谢。

【问题讨论】:

  • 当您将date() 函数与第一行中的撇号一样放在第二行时,它是否有效?
  • 是的,它就是这样工作的,但它不会清理数据库输入

标签: php doctrine symfony-1.4


【解决方案1】:

我“解决了”改为

$q->andWhere('j.expires_at >=?', date('Y-m-d H:i:s' time()));

它是一个临时解决方案,现在可以使用,但我想知道为什么它不能仅与 > 一起使用。 谢谢

【讨论】:

  • 如果有任何兴趣,我可以毫无问题地使用以下内容(MySQL): $q->andWhere('date_created > ?', date('Y-m-d', strtotime( '30 天前')));奇怪的问题。
猜你喜欢
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多