我怎么能改变这个MySQL到mysqli?

基于下面的代码我使用普通的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_*函数调用replace成与其相当的mysqli_* ,至less如果你愿意使用过程API – 这将是更简单的方法,考虑到你已经有一些基于MySQL API,这是一个程序。

为了解决这个问题, MySQLi扩展函数摘要绝对是有帮助的。

例如:

  • mysql_connect将被mysqli_connect所取代
  • mysql_error将被mysqli_error和/或mysqli_connect_error ,取决于上下文
  • mysql_query将被mysqli_queryreplace
  • 等等

请注意,对于某些函数,您可能需要仔细检查参数:也许这里和那里有一些差异 – 但不是那么多,我会说:mysql和mysqli都基于相同的库(libmysql; at至less对于PHP <= 5.2)

例如:

  • 用mysql,你必须使用mysql_select_db连接一次,以表明你想要在哪个数据库上进行查询
  • 另一方面,mysqli允许你指定数据库名称作为mysqli_connect的第四个参数。
  • 不过,如果您愿意,还可以使用mysqli_select_db函数。

一旦你完成了,尝试执行新版本的脚本…并检查是否一切正常; 如果没有…错误狩猎的时间;-)

(我意识到这是旧的,但它仍然出现…)

如果你用mysql_*replacemysql_* ,那么记住一整个mysqli_*函数需要传递数据库链接。

例如:

 mysql_query($query) 

 mysqli_query($link, $query) 

也就是说,需要进行大量的检查。

我总是处理这个最简单的方法

$ con = mysqli_connect($ serverName,$ dbusername,$ dbpassword);

按以下顺序更换3个步骤

  1. 所有“ mysql_select_db( ”与“ mysqli_select_db($ con,
  2. 所有“ mysql_query( ”与“ mysqli_query($ con, ”和
  3. 所有“ mysql_ ”和“ mysqli_ ”。

这每次都适用于我

我暂时build议使用PDO进行SQL访问。

那么只是改变驱动程序并确保SQL在新的后端工作。 理论上。 数据迁移是一个不同的问题。

抽象数据库访问非常好。

如果您的项目中有很多文件要更改,您可以使用像mysql函数一样的名称来创build函数,并在函数中进行如下代码的转换:

 $sql_host = "your host"; $sql_username = "username"; $sql_password = "password"; $sql_database = "database"; $mysqli = new mysqli($sql_host , $sql_username , $sql_password , $sql_database ); /* check connection */ if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); } function mysql_query($query){ $result = $mysqli->query($query); return $result; } function mysql_fetch_array($result){ if($result){ $row = $result->fetch_assoc(); return $row; } } function mysql_num_rows($result){ if($result){ $row_cnt = $result->num_rows;; return $row_cnt; } } 

将mysql转换为mysqli的简短版本

 mysql_connect ---> mysqli_connect mysql_select_db ---> mysqli_select_db mysql_error ---> mysqli_connect_error() mysql_query ---> mysqli_query mysql_fetch_assoc ---> mysqli_fetch_assoc