PHP中的SQL查询只能在函数外工作


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 的值