搜尋

首頁  >  問答  >  主體

如何將mysql改為mysqli

<p>基於下面的程式碼,我用於常規的mysql,我應該如何將其轉換為使用mysqli? </p><p>只要將mysql_query($sql);改為mysqli_query($sql);,是這樣簡單嗎? </p><p><strong><code></code><code></code></strong></p> <pre class="brush:php;toolbar:false;"><?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 My MySQL Error Returned<<br><b>The My MySQL Error Returned<<br><b>The MySQL Error Returned</b>lt;/b> ;' . 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; } ?></pre> <p><br /></p>
P粉124070451P粉124070451514 天前529

全部回覆(2)我來回復

  • P粉663883862

    P粉6638838622023-07-28 14:28:35

    (我意識到這是舊問題,但它仍然經常出現...)

    如果您確實將mysql_*替換為mysqli_*,請記住許多mysqli_*函數需要傳遞資料庫連接。

    例如:


    mysql_query($query)

    變成了:

    mysqli_query($link, $query)

    也就是說,需要進行大量的檢查。

    回覆
    0
  • P粉132730839

    P粉1327308392023-07-28 11:14:09

    首先,您可能需要將每個mysql_*函數呼叫替換為其對應的mysqli_*函數,至少如果您願意使用過程式API的話——考慮到您已經有一些基於MySQL API的程式碼,這將是更簡單的方法,因為MySQL API是過程式的。

    為了幫助您,MySQLi擴充函數摘要無疑會非常有幫助。

    例如:


    • mysql_connect將被替換為mysqli_connect。
    • mysql_error將根據上下文被替換為mysqli_error和/或mysqli_connect_error。
    • mysql_query將被替換為mysqli_query。
    • 等等

    注意:對於某些函數,您可能需要仔細檢查參數:可能會有一些細微的差異,但我想說的是不多:無論是mysql還是mysqli都是基於相同的函式庫( libmysql;至少對於PHP <= 5.2)。

    例如:

    • 使用mysql,您必須在連接後使用mysql_select_db來指示您要在哪個資料庫上執行查詢
    • 而mysqli則允許您將資料庫名稱以mysqli_connect的第四個參數來指定。
    • 不過,還有一個mysqli_select_db函數可供您使用,如果您更喜歡的話。

    完成這些步驟後,請嘗試執行您腳本的新版本...並檢查是否一切正常;如果不正常...那就是時候去找錯誤了;-)

    回覆
    0
  • 取消回覆