【问题标题】:I was creating a php file connecting to a database. Its throwing an error after executing我正在创建一个连接到数据库的 php 文件。执行后抛出错误
【发布时间】:2020-03-15 17:37:12
【问题描述】:

所以我运行了一个 php 文件,我将它连接到数据库并执行查询,但我最终得到一个错误说明

错误更新记录:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在 'SELECT SUM(total) FROM orders 附近使用的正确语法 WHERE created_at >= ( CURDA' 在第 1 行

但执行这些查询将按预期正确地在 SQL 中生成查询框。

这是 php 文件。

<?php

    $username = "examplename";
    $password = "abcdefg";
    $dbname = "exampledb";

    $conn = mysqli_connect('localhost', $username, $password, $dbname);
    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }

    $fifteenDaysTotal = "SELECT SUM(total)  FROM orders 
                        WHERE created_at >= ( CURDATE() - INTERVAL 15 DAY ) AND orderstatus_id=5
                        ORDER BY created_at DESC";

    $sql = "UPDATE `earnings` SET amount = $fifteenDaysTotal";

    if ($conn->query($sql) === TRUE) {
        echo "Record updated successfully";
    } else {
        echo "Error updating record: " . $conn->error;
    }


$conn->close();
?>

谢谢

【问题讨论】:

  • $fifteenDaysTotal 是一个子查询,或者您希望其结果等于金额?
  • 正确陈述"(SELECT SUM(total) FROM orders WHERE created_at &gt;= ( CURDATE() - INTERVAL 15 DAY ) AND orderstatus_id=5 ORDER BY created_at DESC) as tt" $sql = "UPDATE earnings SET amount = $fifteenDaysTotal";
  • @PrabhjotSinghKainth 我得到 $fifteenDaysTotal 的结果。我正在使用结果来更新收入表..
  • @Gulshan 非常感谢。不得不纠正一些事情。 “as tt”不是必需的。无论如何,将其发布为答案:)
  • @RevanthKumar 选择语句的别名。您可以在更新时忽略它。答案添加在下面:)

标签: php mysql sql select mariadb


【解决方案1】:

您没有存储查询的结果,您只是使该查询等于 $sql 查询中的金额。

只需进行以下更改:

$fifteenDaysTotal_query= "SELECT SUM(total) AS total FROM orders 
WHERE created_at >= ( CURDATE() - INTERVAL 15 DAY ) AND orderstatus_id=5 ORDER BY 
created_at DESC";

$query_total=$conn->query($fifteenDaysTotal_query);
$row_total=$query_total->fetch_assoc();
$fifteenDaysTotal=$row_total['total'];

【讨论】:

  • 我也在尝试这个。最后一行应该是 $fifteenDaysTotal 吗?
【解决方案2】:

更新为以下语句。这是sub query,我们需要group这个声明。

 $fifteenDaysTotal = "(SELECT SUM(total) FROM orders WHERE created_at >= ( CURDATE() - INTERVAL 15 DAY ) AND orderstatus_id=5 ORDER BY created_at DESC)"; 

 $sql = "UPDATE earnings SET amount = $fifteenDaysTotal";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 2015-02-27
    • 1970-01-01
    • 2019-08-03
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多