mysqli_connect与mysql_connect的区别

时间:2017-07-10 20:30:55

标签: php mysql mysqli

我需要将php 5代码转换为php7。 使用定义此类函数的脚本转换所有mysql语句:

function mysql_connect($host, $username, $password){
    global $dbconnect;
    $dbconnect = mysqli_connect($host, $username, $password);
    return $dbconnect;
}

好消息是 - 它适用于php7。

现在我用mysqli_connect重写了所有脚本。 然而,使用mysqli的第一个函数失败了。

mysqli_connect(): (HY000/1044): Access denied for user 

如果我切换回mysql_connect它会工作,并在下一个mysqli命令时再次失败。

为什么?

编辑: 连接的完整代码:

function db_connect() 
{
    global $db_sql_hostname,$db_sql_database,$db_sql_user,$db_sql_password;
    require_once 'db-config.php';
    global $db_handle;    
    $db_handle = mysqli_connect($db_sql_hostname, $db_sql_user, $db_sql_password, $db_sql_database) or die("Konnte nicht zum mySQL-Server verbinden: ".mysqli_error());
    mysqli_select_($db_sql_database, $db_handle) or die("Konnte die Datenbank ".$db_sql_database." nicht oeffnen: ".mysqli_error());    
    return $db_handle;
}

请注意,一切都适用于mysql_命令。变量是正确的!

EDIT2:这是db-config.php

<?php
  $db_sql_hostname   = "hostIP";
  $db_sql_database   = "dbname";
  $db_sql_dbuser     = "dbuser";
  $db_sql_dbpassword = "dbpassowrd";
?>

3 个答案:

答案 0 :(得分:1)

您正在传递TRUE作为数据库名称(mysqli_connect的第四个参数),这会导致错误:

_警告:mysqli_connect():( HY000 / 1044):拒绝用户'...'@'...'拒绝数据库'1'...

将行更改为:

$db_handle = mysqli_connect($db_sql_hostname, $db_sql_dbuser, $db_sql_dbpassword) or die("Konnte nicht zum mySQL-Server verbinden: ".mysqli_error());

答案 1 :(得分:0)

mysqli_connect需要参数 mysqli_connect(ip,user,password,database)

在哪里 mysql_connect需要 mysql_connect(ip,user,password)

因此,指定正确的数据库并删除true将解决您的问题

来源:PHP文档

http://php.net/manual/en/function.mysqli-connect.php

http://php.net/manual/en/function.mysql-connect.php

答案 2 :(得分:0)

你的功能

function db_connect() 
{
    global $db_sql_hostname,$db_sql_database,$db_sql_user,$db_sql_password;
    require_once 'db-config.php';
    global $db_handle;    
    $db_handle = mysqli_connect($db_sql_hostname, $db_sql_user, $db_sql_password, $db_sql_database) or die("Konnte nicht zum mySQL-Server verbinden: ".mysqli_error());
    mysqli_select_($db_sql_database, $db_handle) or die("Konnte die Datenbank ".$db_sql_database." nicht oeffnen: ".mysqli_error());    
    return $db_handle;
}

mysqli_select_()应为mysqli_select_db() 并指定$db_handle作为第一个参数,然后指定数据库的名称即。 myslqi_select_db($db_handle,$db_sql_database)

请查看此文档以获得更清晰的信息。 http://php.net/manual/en/mysqli.select-db.php