【问题标题】:mysql displaying data from multiple tablesmysql显示多个表中的数据
【发布时间】:2013-09-20 03:33:25
【问题描述】:

我要显示字段状态、jumlah、harga 和总计。

这是我的表格结构

订购 {id_order, id_user, status}

order_detail {id_order,jumlah, harga, total}

这是我的查询函数:

function shopstat($user_id) {
    return $this->db->query("SELECT * from order_detail left join order on order_detail.id_order=order.id_order where order.id_user=$user_id");
}

但我有一个错误语法:

错误号:1064

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“order on order_detail.id_order=order.id_order where order.id_user=16”附近使用正确的语法

【问题讨论】:

  • 这是标准评论:您正在让自己对 SQL 注入持开放态度。您可能想使用 mysqli prepare() 函数。此外,对于一些复杂的事情,您可能想尝试使用存储过程。
  • 如果在查询之前验证了输入,则不需要存储过程。

标签: php sql mysqli


【解决方案1】:

ORDERORDER BY 的保留字。你必须用反引号把它包起来。我还使用了别名ood,这样你就不必再做更多的反引号了。更多字符 = 更可能出现拼写错误,但这部分取决于您。

$query = "SELECT * from order_detail od
          LEFT JOIN `order` o ON od.id_order=o.id_order 
          WHERE o.id_user=$user_id";

return $this->db->query($query);

保留字的完整列表在这里:

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html(来自福阿德)

【讨论】:

    【解决方案2】:

    order 是 MySQL 中的保留字。见:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

    【讨论】:

      【解决方案3】:

      “订单”是一个保留字,不能用作标识符。改用别的东西

      【讨论】:

        猜你喜欢
        • 2011-04-28
        • 1970-01-01
        • 2013-05-09
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多