PHP 以 Apache 用户而非指定用户身份连接到 MySQL
PHP connecting to MySQL as Apache user instead of specified user
我正在尝试使用 PHP 连接到 MYSQL 数据库。我有这个连接到数据库:
<?php
$servername = "localhost";
$username = "orbital";
$password = "XXXXXXXX";
$dbname = "helios";
function establishConnection() {
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}?>
但是,每当我调用 establishConnection()
时,我都会得到:
Connection failed: Access denied for user 'webmaster'@'localhost' (using password: NO)
webmaster 是我运行 Apache 的计算机上的用户。为什么它使用没有密码的网站管理员用户而不是指定的 'orbital' 用户?
这些变量超出了函数的范围。您应该将这些变量作为函数的参数:
function establishConnection($servername, $username, $password, $dbname) {
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}
$myCon = establishConnection($servername, $username, $password, $dbname);
或:
你可以在函数中声明它们为全局变量(如下),尽管很多人反对(见评论):
<?php
$servername = "localhost";
$username = "orbital";
$password = "XXXXXXXX";
$dbname = "helios";
function establishConnection() {
// Create connection
//without the following line, this function has no access to any
// of these variables because they are outside the function scope
global $servername, $username, $password, $dbname;
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}?>
您需要将数据库变量传递给函数。不要使用 global 关键字;将它们作为参数传递。
<?php
$servername = "localhost";
$username = "orbital";
$password = "XXXXXXXX";
$dbname = "helios";
function establishConnection($servername, $username, $password, $dbname) {
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}?>
我正在尝试使用 PHP 连接到 MYSQL 数据库。我有这个连接到数据库:
<?php
$servername = "localhost";
$username = "orbital";
$password = "XXXXXXXX";
$dbname = "helios";
function establishConnection() {
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}?>
但是,每当我调用 establishConnection()
时,我都会得到:
Connection failed: Access denied for user 'webmaster'@'localhost' (using password: NO)
webmaster 是我运行 Apache 的计算机上的用户。为什么它使用没有密码的网站管理员用户而不是指定的 'orbital' 用户?
这些变量超出了函数的范围。您应该将这些变量作为函数的参数:
function establishConnection($servername, $username, $password, $dbname) {
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}
$myCon = establishConnection($servername, $username, $password, $dbname);
或:
你可以在函数中声明它们为全局变量(如下),尽管很多人反对(见评论):
<?php
$servername = "localhost";
$username = "orbital";
$password = "XXXXXXXX";
$dbname = "helios";
function establishConnection() {
// Create connection
//without the following line, this function has no access to any
// of these variables because they are outside the function scope
global $servername, $username, $password, $dbname;
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}?>
您需要将数据库变量传递给函数。不要使用 global 关键字;将它们作为参数传递。
<?php
$servername = "localhost";
$username = "orbital";
$password = "XXXXXXXX";
$dbname = "helios";
function establishConnection($servername, $username, $password, $dbname) {
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}?>