pdo + sql通过NOT WORKING插入选择组

时间:2017-07-10 06:29:06

标签: php mysql sql-server pdo

有人可以帮我解决这个问题:

  • 想法:
  

插入“表1”,使用表0

中的选择获得的行
  • table1的结构:

    id_i(int Primary AI)| id_e(int)|日期(日期时间)| num(文字)|总和(小数14,2)| stat(tinyint)

红利问题:如果超过1000行,是否有任何关于优化sql请求的想法?

我的代码:

$query = " INSERT INTO table1 (id_e, date, string, sum, stat)
    SELECT id_s, NOW(), GROUP_CONCAT(id_r), SUM(bud), 0
    FROM table0 as e
    WHERE e.stat=4 AND e.datetime<='$date' GROUP BY e.id_s
    ";

    try 
    {
    $bdd = new PDO('xxxx');
    }

    catch(Exception $e)
    {
    die('Erreur: '.$e->getMessage());   
    }
    $request= $bdd->prepare($query);

    if ($bdd->execute()) {
        echo 'ok';
    }
    else {
        echo 'no';
    }

如你所知我得到'不'!但是,如果我只做 SELECT 它正在工作!

3 个答案:

答案 0 :(得分:0)

您能否发布您遇到的错误?

在5.7中,sqlmode默认设置为

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION.

删除子句ONLY_FULL_GROUP_BY。您可以像这样删除:

 SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

请尝试一下,看看它是否适合你。

答案 1 :(得分:0)

如果您没有收到错误,请打开错误报告进行调试

$bdd = new PDO('xxxx');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION;

这样您就可以看到出现了哪些错误,但最终用户看到这些错误并不好。

答案 2 :(得分:-1)

将缺少的列添加到group-by:

ng build --prod