【问题标题】:how can I use "INSERT SELECT" in symfony3?如何在 symfony3 中使用“INSERT SELECT”?
【发布时间】:2017-01-16 22:38:21
【问题描述】:

我想构建查询,将数据插入到 mysql。

 $data=$request->request->all();
     $odd=$data['form']['odd'];
     $stake=$data['form']['stake'];
     $win=$data['form']['win'];
     $login_user=$data['form']['login_user'];

    $separator = '\r\n';

    $db = $this->getDoctrine()->getManager();
    $query = "INSERT INTO zakladyuser (game, type, odd, stake, win, login_user, stat)
              SELECT GROUP_CONCAT(game SEPARATOR :separator ), GROUP_CONCAT(type SEPARATOR :separator ), :odd, :stake, :win, :login_user, 0
              FROM kupon k0";
    $stmt = $db->prepare($query);
    $params = array(
                    "separator"=>$separator,
                    "odd"=>$odd,
                    "stake"=>$stake,
                    "win"=>$win,
                    "login_user"=>$login_user
                  );
    $stmt->execute($params);
    $results = $stmt->fetchAll();

我可以纠正什么?因为我有这些错误:

调用未定义的方法 Doctrine\ORM\EntityManager::prepare()

试图调用“Doctrine\ORM\EntityManager”类的名为“prepare”的未定义方法。

如果这种方式是错误的,我怎样才能做得更好?

【问题讨论】:

    标签: php mysql doctrine-orm symfony


    【解决方案1】:

    你需要在connection对象中调用prepare()

    $db = $this->getDoctrine()->getManager();
    ..
    $stmt = $db->getConnection()->prepare($query);
    

    【讨论】:

    • 非常感谢。我添加了它,然后删除了$results = $stmt->fetchAll();,现在我可以插入这些数据了。但是现在我遇到了分隔符的问题,这些都不起作用,有什么想法吗?
    • 不客气! “分隔符问题”是什么意思?
    • 例如在列类型中:1 [新行] 0 [新行] 等。它像这样添加了我:1\r\n0\r\n 等。但我修复了它,只是将它更改为 $separator = '\r\n'; $separator = "\r\n"; :)。但再次感谢您的帮助
    猜你喜欢
    • 2021-07-22
    • 2012-06-15
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 2019-02-14
    • 1970-01-01
    相关资源
    最近更新 更多