Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使mysqli连接功能?_Php_Mysql_Mysqli_Database Connection - Fatal编程技术网

Php 如何使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

使用mysqli将我连接到数据库的函数有问题。我的目标是键入
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所说的返回变量。