变量在函数内部未定义,无法在函数内部达到MySQL $连接

R2D*_*2D2 3 php mysql mysqli function fetchall

我有一个代码,当我在页面上使用它时,但我试图使这个功能.我无法让它工作,似乎变量$ customer和$ system没有被发送到代码.即使我在Raw中键入它.有什么想法错了吗?$ Customer是客户的名称,$ system可以是'Source'或'Target'.

function status_total($customer, $system){
        $sql_customer       = "SELECT * FROM `Customer` WHERE Cust_Name = '$customer' LIMIT 0,1";
        $customer_selection = mysqli_query($conn,$sql_customer);
        $customer_row       = mysqli_fetch_assoc($customer_selection);
        $env_lines          = $customer_row["Env_Lines"];
        $cust_id            = $customer_row["Cust_ID"];
        $sql_last_records   = "SELECT * FROM $system WHERE Cust_ID = $cust_id ORDER BY Time DESC LIMIT $env_lines";
        $record_selection   = mysqli_query($conn, $sql_last_records);               

        $result = mysqli_fetch_all($record_selection, MYSQLI_ASSOC);
        $states = array_column($result, "Stat");

        if($states == array_fill(0, count($states), "Run")) {
            echo "Success";
        } else 
            echo "Fail";

    }
Run Code Online (Sandbox Code Playgroud)

https://gist.github.com/R2D2-05/78d81566e4bf0eafd1fa

Mos*_*ebi 5

代码的问题是$conn变量,它被视为函数内的局部变量.你应该:

function status_total($customer, $system){
        global $conn;

        $sql_customer       = "SELECT * FROM `Customer` WHERE Cust_Name = '$customer' LIMIT 0,1";
        $customer_selection = mysqli_query($conn,$sql_customer);
        $customer_row       = mysqli_fetch_assoc($customer_selection);
        $env_lines          = $customer_row["Env_Lines"];
        $cust_id            = $customer_row["Cust_ID"];
        $sql_last_records   = "SELECT * FROM $system WHERE Cust_ID = $cust_id ORDER BY Time DESC LIMIT $env_lines";
        $record_selection   = mysqli_query($conn, $sql_last_records);               

        $result = mysqli_fetch_all($record_selection, MYSQLI_ASSOC);
        $states = array_column($result, "Stat");

        if($states == array_fill(0, count($states), "Run")) {
            echo "Success";
        } else 
            echo "Fail";

    }
Run Code Online (Sandbox Code Playgroud)

或者你也可以传递$conn函数,所以将函数的定义更改为:

function status_total($conn, $customer, $system){...}
Run Code Online (Sandbox Code Playgroud)