Php 如何使mysqli连接功能?
使用mysqli将我连接到数据库的函数有问题。我的目标是键入Php 如何使mysqli连接功能?,php,mysql,mysqli,database-connection,Php,Mysql,Mysqli,Database Connection,使用mysqli将我连接到数据库的函数有问题。我的目标是键入getConnected()我需要连接的地方 代码如下: function getConnected() { $host = 'localhost'; $user = 'logintest'; $pass = 'logintest'; $db = 'vibo'; $mysqli = new mysqli($host, $user, $pass, $db); if ($mysqli-&g
getConnected()代码>我需要连接的地方
代码如下:
function getConnected()
{
$host = 'localhost';
$user = 'logintest';
$pass = 'logintest';
$db = 'vibo';
$mysqli = new mysqli($host, $user, $pass, $db);
if ($mysqli->connect_error) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
}
这是我在调用getConnected()
后尝试使用$mysqli
时遇到的错误:
注意:未定义的变量:第19行C:\xampp\htdocs\xampp\loginsystem\index.php中的mysqli
正如一些用户所建议的(也是最好的方法),返回mysqli实例
function getConnected($host,$user,$pass,$db) {
$mysqli = new mysqli($host, $user, $pass, $db);
if($mysqli->connect_error)
die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
return $mysqli;
}
例如:
$mysqli = getConnected('localhost','user','password','database');
您不需要创建这样的函数。正确完成后,与mysqli的连接只需3行代码。这样的函数的定义和执行将增加两倍
打开连接时,请记住始终遵循以下三个步骤:
启用mysqli错误报告李>
创建mysqli类的实例
设置适当的字符集。推荐的是utf8mb4
如果您希望将这3行代码包装到一个函数中,可以执行以下操作:
function getConnected(): \mysqli {
$host = 'localhost';
$user = 'logintest';
$pass = 'logintest';
$db = 'vibo';
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli($host, $user, $pass, $db);
$mysqli->set_charset('utf8mb4');
// return the instance of mysqli class
return $mysqli;
}
但是,硬编码这些值没有多大意义。这些值应该来自环境变量(例如,使用函数读取)或来自配置文件。例如:
function getConnected(): \mysqli {
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli(getenv('DB_HOST'), getenv('DB_USER'), getenv('DB_PASS'), getenv('DB_NAME'));
$mysqli->set_charset('utf8mb4');
// return the instance of mysqli class
return $mysqli;
}
如果你在一个函数中设置了一个var,你就不能使用outSam。如果outSam是正确的,请查找php变量范围。您可以使用以下行返回变量:return$mysqli;然后像这样调用函数:$con=getConnected();你在哪里使用这个功能?需要更多的itah,所以我需要全局变量?@user2021893:不,只需按照Keeleon所说的返回变量。