Php 如何修复:警告:mysqli\u get\u server\u info()希望参数1为mysqli?

Php 如何修复:警告:mysqli\u get\u server\u info()希望参数1为mysqli?,php,mysql,mysqli,Php,Mysql,Mysqli,我的PHP非常差,我正在尝试在我的主机上安装arfoo.com。我对mysql和mysqli有一些问题,现在已经解决了 但现在我得到了这个错误: 警告:mysqli_get_server_info()希望参数1是mysqli,第47行的/home/***/install/step4.php中给出的字符串 对于以下代码: <?php /** * Arfooo * * @package Arfooo * @copyright Copyright (c) Arfooo Annu

我的PHP非常差,我正在尝试在我的主机上安装arfoo.com。我对mysql和mysqli有一些问题,现在已经解决了

但现在我得到了这个错误:

警告:mysqli_get_server_info()希望参数1是mysqli,第47行的/home/***/install/step4.php中给出的字符串

对于以下代码:

<?php
/**
 * Arfooo
 * 
 * @package    Arfooo
 * @copyright  Copyright (c) Arfooo Annuaire (fr) and Arfooo Directory (en)
 *             by Guillaume Hocine (c) 2007 - 2010
 *             http://www.arfooo.com/ (fr) and http://www.arfooo.net/ (en)
 * @author     Guillaume Hocine & Adrian Galewski
 * @license    http://creativecommons.org/licenses/by/2.0/fr/ Creative Commons
 */
session_start();
error_reporting(E_ALL);
require_once('languages/' . $_SESSION['selectedLanguage'] . '.php'); 

$chemin_includes_header = 'includes/';
include_once($chemin_includes_header.'header.php'); 

require_once("dbfunctions.php"); 
require_once("createdb.php");

function createDbConfig($dbHost, $dbUser, $dbPass, $dbName, $dbPrefix)
{
    $dbConfig['DB_HOST'] = $dbHost;
    $dbConfig['DB_USER'] = $dbUser;
    $dbConfig['DB_PASS'] = $dbPass;
    $dbConfig['DB_NAME'] = $dbName;
    $dbConfig['DB_PREFIX'] = $dbPrefix;
    $dbConfig['DB_INSTALLED'] = true;

    $data = "<?php\n \$dbConfig = " . var_export($dbConfig, true). ";\n ?>";
    file_put_contents("../config/db.php", $data);
}

$_SESSION['mysqlServer'] = $_POST['mysqlServer'];
$_SESSION['mysqlUser'] = $_POST['mysqlUser'];
$_SESSION['mysqlPassword'] = $_POST['mysqlPassword'];
$_SESSION['mysqlDatabaseName'] = $_POST['mysqlDatabaseName'];
$_SESSION['mysqlTablesPrefix'] = $_POST['mysqlTablesPrefix'];

dbConnect($_SESSION['mysqlServer'],
          $_SESSION['mysqlUser'],
          $_SESSION['mysqlPassword'],
          $_SESSION['mysqlDatabaseName']
          );

$mysqlVersion = mysqli_get_server_info();    

$mysqlVersionCorrect = version_compare($mysqlVersion, "4.1", ">=");

if($mysqlVersionCorrect)
{

    createDbConfig($_POST['mysqlServer'],
                   $_POST['mysqlUser'],
                   $_POST['mysqlPassword'],
                   $_POST['mysqlDatabaseName'],
                   $_POST['mysqlTablesPrefix']);



    $tablesList = createDbTables($_POST['mysqlTablesPrefix'],
                                 $_SESSION['siteRootUrl'],
                                 $_SESSION['selectedLanguage'],
                                 $_SESSION['urlRewriting']
                                 );
}
else
{
    $tablesList = array();
}

?>

非常感谢您的帮助

如果要使用过程样式,应该将
mysqli\u connect()
返回的对象作为参数传递给
mysqli\u get\u server\u info()

或者使用OO样式:

更多信息请访问

编辑:

函数应该返回mysqli对象,尝试添加
return$conn结尾,如下所示:

function dbConnect($server, $user, $pass, $dbName)
{

    /* install database with prefixed tables */

    $conn = mysqli_connect($server, $user, $pass, $dbName);
    //mysql_connect($server, $user, $pass) or die('could not connect to mysql');;

    mysqli_query($conn, 'CREATE TEMPORARY TABLE table');
    //mysqli_query($dbName, 'CREATE TEMPORARY TABLE `table`');
    //mysql_query('create database IF NOT EXISTS ' . $dbName);

    mysqli_select_db($conn, $dbName) or die('could not select database');

    return $conn;
}

如果要使用过程样式,应将
mysqli\u connect()
返回的对象作为参数传递给
mysqli\u get\u server\u info()

或者使用OO样式:

更多信息请访问

编辑:

函数应该返回mysqli对象,尝试添加
return$conn结尾,如下所示:

function dbConnect($server, $user, $pass, $dbName)
{

    /* install database with prefixed tables */

    $conn = mysqli_connect($server, $user, $pass, $dbName);
    //mysql_connect($server, $user, $pass) or die('could not connect to mysql');;

    mysqli_query($conn, 'CREATE TEMPORARY TABLE table');
    //mysqli_query($dbName, 'CREATE TEMPORARY TABLE `table`');
    //mysql_query('create database IF NOT EXISTS ' . $dbName);

    mysqli_select_db($conn, $dbName) or die('could not select database');

    return $conn;
}

作为一个傻瓜,我试着这样做:$mysqlConnect=dbConnect($_会话['mysqlServer'],$_会话['mysqlUser'],$_会话['mysqlPassword'],$_会话['mysqlDatabaseName'])$mysqlVersion=mysqli\u get\u server\u info($mysqlConnect);但是它不起作用。你能给我看一下你的
dbConnect()
函数吗(编辑你的问题以添加它)?如果你能给我一个复制和粘贴的代码,我将不胜感激。我真的对PHP一无所知:(我需要知道
dbConnect()
返回什么,试着在包含的文件(比如dbfunctions.PHP或createdb.PHP)中找到它。添加
return$conn;
dbConnect()
函数的末尾,它应该可以工作。作为一个傻瓜,我试着这样做:$mysqlConnect=dbConnect($\u SESSION['mysqlServer'],$会话['mysqlUser'],$会话['mysqlPassword'],$会话['mysqlDatabaseName'];$mysqlVersion=mysqli\u获取服务器信息($mysqlConnect);但它不起作用。你能给我看看你的
dbConnect()
函数吗(编辑你的问题以添加它)?如果你能给我一个复制粘贴的代码,我将不胜感激。我真的对PHP一无所知:(我需要知道
dbConnect()
返回什么,试着在包含的文件(如dbfunctions.PHP或createdb.PHP)中找到它。在
dbConnect()
函数的末尾添加
return$conn;
,它应该可以工作。
$mysqlConnect = new mysqli("localhost", "my_user", "my_password");
$mysqlVersion = $mysqlConnect->server_info;
function dbConnect($server, $user, $pass, $dbName)
{

    /* install database with prefixed tables */

    $conn = mysqli_connect($server, $user, $pass, $dbName);
    //mysql_connect($server, $user, $pass) or die('could not connect to mysql');;

    mysqli_query($conn, 'CREATE TEMPORARY TABLE table');
    //mysqli_query($dbName, 'CREATE TEMPORARY TABLE `table`');
    //mysql_query('create database IF NOT EXISTS ' . $dbName);

    mysqli_select_db($conn, $dbName) or die('could not select database');

    return $conn;
}