2009-12-29 74 views
5

每個的區別/優點是什麼?缺點是什麼?MySQL與PHP中的MySQLi

我不是在尋找編碼偏好或主觀答案。

什麼是實際 diferences? (存儲,實現,代碼的外觀,環境要求...)

+0

此外* [MySQL的VS庫MySQLi在使用PHP(http://stackoverflow.com/questions/548986/mysql-vs-mysqli-when-using-php)* – 2016-02-08 00:24:04

回答

11

您可以使用prepared statements和mysqli。
還有一個function to store large (blob) data「舊」的mysql擴展沒有。

// php-mysql: no oo-interface 
$mysqli = new mysqli('localhost', 'localonly', 'localonly'); 
if ($mysqli->connect_error) { 
    die($mysqli->connect_error); 
} 

// php-mysql: no prepared statements 
$stmt = $mysqli->prepare("INSERT INTO foo (mydata) VALUES (?)"); 
$stmt->bind_param("b", $null); 

// php-mysql: no function to send data in chunks 
$fp = fopen("php://input", "r"); 
while (!feof($fp)) { 
    $chunk = fread($fp, 4096); 
    $stmt->send_long_data(0, $chunk); 
} 
$stmt->execute(); 
+0

+1,獎金問題 - 如果我安裝了MySQL,我將如何設置MySQLi?可以使用MySQLi函數調用MySQL數據庫? – Moshe 2009-12-29 02:37:36

+0

您可以使用這兩個模塊連接到MySQL服務器。 mysqli是「只」一個php模塊,你可以編譯進php內核或作爲模塊加載。例如* nix發行版通常有php-modulename軟件包,您可以通過ditribution的軟件包管理器進行安裝。 – VolkerK 2009-12-29 03:15:47

9

閱讀PHP手冊中的overview,它回答了大多數問題並有一個比較圖表。

+0

從這個概述:「如果你正在使用MySQL版本4.1.3或更高版本,強烈建議您改用mysqli擴展名。「 – Oscar 2012-10-26 04:10:38

3

準備好的語句可以在mysqli中找到。您也可以使用OO界面,而不是mysql_foo_bar(),您有$con->foo_bar()