简体   繁体   English

php: 找不到该列,但它在数据库中

[英]php:Can't find the column but it is in the database

I am having trouble figuring out what's wrong whit my code.我无法弄清楚我的代码有什么问题。 The code is used to take out specific columns from 2 big tables from a database.该代码用于从数据库的 2 个大表中取出特定列。 But we also need to sum 1 specific value when after I have used the query.但是在我使用查询之后,我们还需要对 1 个特定值求和。

The problem is in this part问题出在这部分

  $query = substr($query, 4);
    $sql2 = "SELECT SUM(Forspris) FROM orderrad
    JOIN orderhuvud on orderhuvud.OrderKund = orderrad.Orderdatum
     where ". $query;
        echo $sql2;
        $result = mysqli_query($conn, $sql2) or die(mysqli_error($conn));
        while($row = mysqli_fetch_array($result)){
            echo print_r($row);     }

this is the error i get:这是我得到的错误:

SELECT SUM(Forspris) FROM orderrad JOIN orderhuvud on orderhuvud.OrderKund = orderrad.Orderdatum where OrderKund = '15' AND Orderdatum between '2015-04-16' AND '2015-05-06'Unknown column 'orderrad.Orderdatum' in 'on clause' SELECT SUM(Forspris) FROM orderrad JOIN orderhuvud.OrderKund = orderrad.Orderdatum where OrderKund = '15' AND Orderdatum between '2015-04-16' AND '2015-05-06'Unknown column 'orderrad.Orderdatum' in '关于条款'

but it longer up in the code it can find the column orderdatum in the query但它在代码中更长,它可以在查询中找到列 orderdatum

<!doctype html>
<html>
<head>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<link rel="stylesheet" href="css.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">

    </head>
    <body>

    <?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "garp";

    $conn = new mysqli ($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    /*    $query = $_GET['query']; */
        $orderkund = $_GET['Orderkundinput']; 
        $artikel = $_GET['Artikelinput']; 
        $startDate =$_GET['startDate']; 
        $endDate =$_GET['endDate'] ;

        $MCkys = "orderdatum";

        $min_length = 2;
        $artikelQuery="";
        $orderkundQuery="";
        if(strlen($artikel) >= $min_length){ 
            $artikel = htmlspecialchars($artikel); 

            $artikel = mysqli_real_escape_string($conn, $artikel);
            $artikelQuery = " AND Artikelnr = '$artikel'";
        }
        if (strlen($orderkund) >= $min_length){ 
            $orderkund = htmlspecialchars($orderkund); 

            $orderkund = mysqli_real_escape_string($conn, $orderkund);
            $orderkundQuery = " AND OrderKund = '$orderkund'";
        }

        if (strlen($startDate) >= $min_length){ 
            $startDate = htmlspecialchars($startDate); 

            $startDate = mysqli_real_escape_string($conn, $startDate);
            $startDateQuery = " AND Orderdatum between '$startDate' ";
        }

        if (strlen($endDate) >= $min_length){ 
            $endDate = htmlspecialchars($endDate); 

            $endDate = mysqli_real_escape_string($conn, $endDate);
            $endDateQuery = "AND '$endDate'";
        }

        $query = $artikelQuery.$orderkundQuery.$startDateQuery.$endDateQuery;
        if(strlen($query) >= $min_length){ 
        $sql = "SELECT OrderHuvud.Ordernummer ,OrderHuvud.OrderserieIK ,OrderKund ,Fakturakund ,Orderdatum ,Erreferens ,Levereratvarde ,Radnummer ,Artikelnr ,Benamning ,Leveranstid ,Ursprungligtantal ,Levereratantal ,Forspris ,Bruttopris ,Varukostnad FROM garp.OrderHuvud left join garp.OrderRad on OrderHuvud.Ordernummer = OrderRad.Ordernummer where  OrderHuvud.OrderserieIK = 'K'" .$query;
        $raw_results = $conn->query ($sql);
            $row_cnt = false === $raw_results ? 0 : $raw_results->num_rows;
            echo " <p class='rows'> Numbers of rows loaded: $row_cnt </p>";
            if($row_cnt > 0){
       while($raw_result = mysqli_fetch_array($raw_results)){
           echo "<table class='table'><thead class='thead-light'><tr><th class='col'>".'Ordernummer'."</th><th class='col'>".'OrderserieIK'."</th><th class='col'>".'Orderkund'."</th><th class='col'>".'fakturakund'."</th><th class='col'>".'orderdatum'."</th><th class='col'>".'erreferens'."</th><th class='col'>".'leveratvarde'."</th><th class='col'>".'radnummer'."</th><th class='col'>".'artikelnr'."</th><th class='col'>".'benamning'."</th><th class='col'>".'leveranstid'."</th><th class='col'>".'Ursprungligtantal'."</th><th class='col'>".'Levereratantal'."</th><th class='col'>".'forspris'."</th><th class='col'>".'bruttopris'."</th><th class='col'>".'varukostnad'."</th></tr></thead>";
           echo "<tbody><tr><td>".$raw_result['Ordernummer']."</td><td>".$raw_result['OrderserieIK']."</td><td>".$raw_result['OrderKund']."</td><td>".$raw_result['Fakturakund']."</td><td>".$raw_result['Orderdatum']."</td><td>".$raw_result['Erreferens']."</td><td>".$raw_result['Levereratvarde']."</td><td>".$raw_result['Radnummer']."</td><td>".$raw_result['Artikelnr']."</td><td>".$raw_result['Benamning']."</td><td>".$raw_result['Leveranstid']."</td><td>".$raw_result['Ursprungligtantal']."</td><td>".$raw_result['Levereratantal']."</td><td>".$raw_result['Forspris']."</td><td>".$raw_result['Bruttopris']."</td><td>".$raw_result['Varukostnad']."</td></tr></tbody></table>";

       }
            }

            else{
       echo "No return";
            }
        }
        else{
            echo "Minimum length is ".$min_length;
        }
    $query = substr($query, 4);
    $sql2 = "SELECT SUM(Forspris) FROM orderrad
    JOIN orderhuvud on orderhuvud.OrderKund = orderrad.Orderdatum
     where ". $query;
        echo $sql2;
        $result = mysqli_query($conn, $sql2) or die(mysqli_error($conn));
        while($row = mysqli_fetch_array($result)){
            echo print_r($row);     }
        ?>

Column Names:列名称:

在此处输入图像描述

SELECT SUM(Forspris) FROM orderrad where orderhuvud.OrderKund

Your table is orderrad and in your where you try to use another table ( orderhuvud ) but you need to join first in order to use it, or select from it.您的表是orderrad ,在您尝试使用另一个表 ( orderhuvud ) 的地方,但您需要先加入才能使用它,或从中选择。

SELECT SUM(Forspris) FROM orderrad 
JOIN orderhuvud on orderhuvud.your_column_to_match = orderrad.your_column_to_match
where orderhuvud.OrderKund = '15' AND orderhuvud.Orderdatum between '2015-04-16' AND '2015-05-06'

Above code will join your table.上面的代码将加入您的表格。 In order to join them you need to find this column that both tables share and is the same for them so you join them on this.为了加入它们,您需要找到两个表共享并且对它们相同的列,以便您加入它们。

Just a really clear example, please don't hate for the w3school, this example is really really clear for inner join.只是一个非常清楚的例子,请不要讨厌 w3school,这个例子对于内部连接来说真的很清楚。 Read more here!!!在这里阅读更多!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM