【问题标题】:Symfony 1.4 Doctrine run custom query give warningsSymfony 1.4 Doctrine 运行自定义查询给出警告
【发布时间】:2013-04-18 07:37:07
【问题描述】:

我尝试按如下方式运行以下查询。

 $query = "DELETE FROM `ski_chalet_price` WHERE 1";    

 $conn = Doctrine_Manager::getInstance()->connection();
 $stmt = $conn->prepare($query);
 $stmt->execute();

但它会引发以下警告。

Warning: Invalid argument supplied for foreach() in /home/dinuka/workspace/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php on line 196

Warning: join(): Invalid arguments passed in /home/dinuka/workspace/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php on line 141

这是我要运行的查询。

INSERT INTO ski_chalet_price 
(ski_chalet_id, month, d_19,d_20,d_21,d_22,d_23,d_24,d_25,created_at) VALUES
(44,'2013-04-01',10,10,10,10,10,10,10,'2013-04-19 13:27:26') 
ON DUPLICATE KEY UPDATE 
ski_chalet_id = 44, month = '2013-04-01',d_19 = 10,d_20 = 10,d_21 = 10,d_22 = 10,d_23 = 10,d_24 = 10,d_25 = 10, updated_at = '2013-04-19 13:27:26' ;

这不取决于我的查询。什么问题?

【问题讨论】:

  • 为什么需要使用原始查询来运行这种查询?你不能用教义方法做到这一点吗?
  • 没有。实际上我想运行 Upsert 查询。我以简单查询为例。这个结果不是依赖查询。
  • 您能否提出您想要执行的正确查询?还有,你在做什么之后
  • @j0k - 这不是查询问题。我用示例查询更新了我的问题。
  • 我知道这不是查询问题,我想知道您查询后做了什么,查询结果做了什么。

标签: symfony1 doctrine


【解决方案1】:

我检查了sfDoctrineConnectionProfiler.class.php 上的代码,发现execute(); 需要一组空参数(即一个空数组)才能不抱怨。

所以:

$stmt->execute();

应该是:

$stmt->execute(array());

请注意,错误中的“加入”一词具有误导性。它不是指 SQL 连接,而是指 PHP 的原生 join() 函数,它是 implode() 的别名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多