[英]SQL query in PHP only works outside function
我有以下PHP代碼段:
function getFacilities($testName, $dbAdapter) {
$sql1 = "SELECT * FROM facilities_db WHERE facility_name = '$testName'";
$result1 = $dbAdapter->query($sql1);
$facility_details = array();
while ($row = mysqli_fetch_assoc($result1))
{
$facility_details[] = $row;
}
return $facility_details;
}
$testName = "Abraham Moss Leisure";
$facility_data = getFacilities($testName, $mysqli);
僅出於測試目的,$ testName的值是任意的。 這是答案中的函數,但是我最初的定義的唯一區別是沒有$ dbAdapter作為參數。
您需要將$ testName設置為參數,還要設置將用於獲得與SGBD的連接的適配器(此處為mysqli)。
function getFacilities($testName, $dbAdapter) {
$sql1 = "SELECT * FROM facilities_db WHERE facility_name = '$testName'";
$result1 = $dbAdapter->query($sql1);
$facility_details = array();
while ($row = mysqli_fetch_assoc($result1))
{
$facility_details[] = $row;
}
return $facility_details;
}
我們需要將$testName
和$mysqli
作為您的dbAdapter傳遞給該函數。 因此,這就是我們調用函數的方式:
$facility_data = getFacilities($testName, $dbAdapter);
希望這會有所幫助,
測試查詢結果:
print_r(mysqli_fetch_assoc($result));
測試$mysqli
的功能:
function get($testName, $adapter) { if (!isset($adapter)) echo 'no'; }
使用靜態數據庫連接:
class GlobalClass { public static $db = null; }
class Connection {
public $connection = null;
public function connect() {
if ($connection == null)
// operation
$this->connection = 'obj';
}}
$db = new Connection();
$db->connect();
GlobalClass::$db = new Connection();
GlobalClass::$db->connect();
GlobalClass::$db->connection->query($sql);
function yourFunction($testName) {
$sql1 = "SELECT * FROM facilities_db WHERE facility_name = '$testName'";
$result1 = GlobalClass::$db->connection->query($sql1);
$facility_details = array();
while ($row = mysqli_fetch_assoc($result1)) {
$facility_details[] = $row;
}
return $facility_details;
}
function getFacilities($testName) {
global $dbAdapter;
$sql1 = "SELECT * FROM facilities_db WHERE facility_name = '$testName'";
$result1 = $dbAdapter->query($sql1);
$facility_details = array();
while ($row = mysqli_fetch_assoc($result1))
{
$facility_details[] = $row;
}
return $facility_details;
}
$testName = "Abraham Moss Leisure";
$facility_data = getFacilities($testName);
將連接變量聲明為全局變量,並傳遞$ testname的值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.