Переменная не определена внутри функции, не может достичь MySQL $ соединения внутри функции

У меня есть код, который работает, когда я использую его на странице, но я пытаюсь сделать это функцией. Я не могу заставить его работать, похоже, что переменные $ 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";

}

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

3

Решение

Проблема с вашим кодом $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";

}

Или вы также можете передать $conn через функцию, поэтому измените определение функции на:

function status_total($conn, $customer, $system){...}
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]