如何将下面这段代码中的mysql修改为mysqli?

新手上路,请多包涵

服务器升级到了PHP,但是使用的PHP代码中使用的是mysql_connet链接数据库,自己尝试着修改,但是还是妨碍吸纳问题。

function _makeConnection() 
    {
        $this->logBenchmark('_makeConnection() {');
        
        $connected = false;
        if (@mysql_connect($this->db['server'],$this->db['username'],$this->db['password']))
        {
            if (@mysql_select_db($this->db['database']))
            {
                $connected = true;
            }
            else
            {
                $this->logError('MySQL Error: '.mysql_error().'. ('.mysql_errno().')', 2);
            }
        }
        else
        {
            $this->logError('MySQL Error: '.mysql_error().'. ('.mysql_errno().')', 2);
        }
        if (!$connected)
        {
            $this->logErrorNote('<p>Mint was unable to connect to the database. Please make sure that the correct values have been added to <code>/config/db.php</code>.</p>');
        }
        $this->logBenchmark('}');
        return $connected;
    }

function query($query)
    {
        $this->logBenchmark('query("'.substr($query, 0, 24).'...") {');
        
        $this->queries[] = $query;
        if (!($result = mysqli_query($query)))
        {
            $this->logError('MySQL Error: '.mysqli_error().'. ('.mysqli_errno().')<br />Query: '.$query);
            $result = false;
        }
        
        $this->logBenchmark('}');
        return $result;
    }

修改后的代码:

    function _makeConnection() 
    {
        $this->logBenchmark('_makeConnection() {');
        
        $connected = false;
        if (@mysqli_connect($this->db['server'],$this->db['username'],$this->db['password'],$this->db['database']))
        {
            $connected = true;
        }
        else
        {
            $this->logError('MySQL Error: '.mysqli_error().'. ('.mysqli_errno().')', 2);
        }
        if (!$connected)
        {
            $this->logErrorNote('<p>Mint was unable to connect to the database. Please make sure that the correct values have been added to <code>/config/db.php</code>.</p>');
        }
        $this->logBenchmark('}');
        return $connected;
    }

function query($query)
    {
        $this->logBenchmark('query("'.substr($query, 0, 24).'...") {');
        
        $this->queries[] = $query;
        if (!($result = mysqli_query($query)))
        {
            $this->logError('MySQL Error: '.mysqli_error().'. ('.mysqli_errno().')<br />Query: '.$query);
            $result = false;
        }
        
        $this->logBenchmark('}');
        return $result;
    }

错误原因,mysqli_query需要传递2个参数,$link和$query,但是原始方法中并没有传入$link

阅读 4.3k
2 个回答
$link = @mysqli_connect(...)

mysqli使用实例
参考:http://php.net/manual/zh/book...

//面向对象风格
$mysqli = new mysql("localhost", "root", "", "test");
if(mysqli_connect_error()){
    //数据库链接错误
    unset($mysqli);
    die(mysqli_connect_error());
}

$query = "SELECT * FROM `user`"
$result = $mysqli->query($query);
if($result){
    while($row = $result->fetch_row()){
        //...
    }
    $result->free();
}else{
    //执行sql语句失败
    die($mysqli->error);
}
$mysqli->close();
//过程化风格
$mysqli = mysqli_connect("localhost", "root", "", "test");
if(mysqli_connect_error()){
    //数据库连接错误
    unset($mysqli);
    die(mysqli_connect_error());
}

$query = "SELECT * FROM `user`"
$result = $mysqli_query($mysqli,$query);
if($result){
    while($row = mysqli_fetch_row($result)){
        //...
    }
    mysqli_free_result($result);
}else{
    //执行sql语句失败
    die(mysqli_error($mysqli));
}
mysqli_close($mysqli);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题