根据下面用于常规mysql的代码,如何将其转换为mysqli?

mysql_query($sql);更改为mysqli_query($sql);一样简单吗?

<?PHP

//in my header file that is included on every page I have this
$DB["dbName"] = "emails";
$DB["host"] = "localhost";
$DB["user"] = "root";
$DB["pass"] = "";
$link = mysql_connect($DB['host'], $DB['user'], $DB['pass']) or die("<center>An Internal Error has Occured. Please report following error to the webmaster.<br><br>".mysql_error()."'</center>");
mysql_select_db($DB['dbName']);
// end header connection part

// function from a functions file that I run a mysql query through in any page.
function executeQuery($sql) {
    $result = mysql_query($sql);
    if (mysql_error()) {
        $error = '<BR><center><font size="+1" face="arial" color="red">An Internal Error has Occured.<BR> The error has been recorded for review</font></center><br>';
        if ($_SESSION['auto_id'] == 1) {
            $sql_formatted = highlight_string(stripslashes($sql), true);
            $error .= '<b>The MySQL Syntax Used</b><br>' . $sql_formatted . '<br><br><b>The MySQL Error Returned</b><br>' . mysql_error();
        }
        die($error);
    }
    return $result;
}

// example query ran on anypage of the site using executeQuery function
$sql='SELECT auto_id FROM friend_reg_user WHERE auto_id=' .$info['auto_id'];
$result_member=executequery($sql);
if($line_member=mysql_fetch_array($result_member)){
    extract($line_member);
} else {
    header("location: index.php");
    exit;
}
?>

最佳答案

第一步,可能是用等效的mysql_*替换每个mysqli_*函数调用,至少在您愿意使用过程式API的情况下-考虑到您已经有一些基于代码的方法,这将是更简单的方法在MySQL API上,这是一种程序。

为此,The MySQLi Extension Function Summary绝对是有用的。

例如:


mysql_connect将替换为mysqli_connect
mysql_error将被mysqli_error和/或mysqli_connect_error取代,具体取决于上下文
mysql_query将替换为mysqli_query
等等


注意:对于某些功能,您可能需要仔细检查参数:也许在这里和那里有一些区别-但不是很多,我要说:mysql和mysqli都基于同一个库(libmysql;至少对于PHP
例如:


使用mysql时,必须在连接后使用mysql_select_db来指示要在哪个数据库上执行查询
另一方面,mysqli允许您将数据库名称指定为mysqli_connect的第四个参数。
不过,如果愿意,还可以使用mysqli_select_db函数。



完成后,尝试执行脚本的新版本...并检查是否一切正常;如果没有...时间寻找虫子;-)

10-08 02:05