połączenie mysqli nie działa w funkcji? [duplikować]
To pytanie ma już tutaj odpowiedź:
Wywołanie funkcji składowej prepare () na nie obiektowej Pomocy PHP 8 odpowiedziMam problemy z wykonaniem zapytania mysql wewnątrz funkcji php. Błąd, który otrzymuję, jest
Notice: Undefined variable: link in C:\path\api\inc\restFunctions.php on line 16
Jest kilka plików dzwoniących do siebie, więc spróbuję przedstawić niezbędne informacje.
Dostęp do adresu URL:
localhost/serverList/api/rest.php?action=allServers
serverList / api / rest.php
<?php
include 'inc/restFunctions.php';
$possibleCalls = array('allServers','allEnvs','allTypes','false');
if(isset($_GET['action'])){
$action = $_GET['action'];
}
else{
$action = 'false';
}
if(in_array($action,$possibleCalls)){
switch ($action){
case 'allServers':
$return = allServers();
break;
case 'allEnvs':
$return = allEnvs();
break;
case 'allTypes':
$return = allTypes();
break;
case 'false':
$return = falseReturn();
break;
}
}
serverList / api / inc / restFunctions.php
<?php
include ('inc/config.php');
function allServers(){
$serverInfoQuery = "SELECT * FROM servers"
$allServerResults = $link->query($serverInfoQuery);
$json = array();
while($row = $allServerResults->fetch_assoc()){
$json[]['serverID'] = $row['serverID'];
$json[]['environment'] = $row['environment'];
$json[]['type'] = $row['type'];
$json[]['serverIP'] = $row['serverIP'];
$json[]['serverDescription'] = $row['serverDescription'];
$json[]['serverCreatedBy'] = $row['serverCreatedBy'];
$json[]['serverCreatedDtTm'] = $row['serverCreatedDtTm'];
$json[]['serverUpdatedBy'] = $row['serverUpdatedBy'];
$json[]['serverUpdatedDtTm'] = $row['serverUpdatedDtTm'];
}
$jsonResults = json_encode($json);
return $jsonResults;
}
?>
serverList / api / inc / config.php
<?php
$host = 'localhost';
$user = 'userName';
$password = 'password';
$database = 'database';
$link = new mysqli($host, $user, $password, $database);
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
?>
Sprawdziłem, że zapytanie jest wywoływane. Sprawdziłem również, czy informacje o połączeniu (zamaskowane powyżej) działają na innej stronie tego oprogramowania, które wysyła zapytanie do db.
Zakładam, że musiałem gdzieś pominąć cytat lub paren, ale jestem zaskoczony, gdzie to może być.