MySQL和MySQLi都是用于連接MySQL數據庫的PHP擴展,可以在PHP中執行MySQL查詢和操作數據庫。但是它們之間有一些重要的區別。
MySQLi是MySQL Improved Extension的縮寫,它提供了一些MySQL擴展缺失的功能,比如支持面向對象編程的方式操作數據庫、支持預處理語句,同時也提供了MySQL擴展所具有的所有功能。此外,MySQLi比MySQL擴展更加安全,因為它支持參數綁定,可以有效地防止SQL注入攻擊。
//MySQL連接示例 $conn = mysql_connect('localhost', 'root', 'mypassword'); if(!$conn){ die('數據庫連接失敗:'.mysql_error()); } mysql_select_db('mydatabase', $conn); $result = mysql_query('SELECT * FROM mytable'); while($row = mysql_fetch_array($result)){ echo $row['field1'].' '.$row['field2'].'
'; } mysql_close($conn);
//MySQLi連接示例 $conn = mysqli_connect('localhost', 'root', 'mypassword', 'mydatabase'); if(!$conn){ die('數據庫連接失敗:'.mysqli_connect_error()); } $result = mysqli_query($conn, 'SELECT * FROM mytable'); while($row = mysqli_fetch_array($result)){ echo $row['field1'].' '.$row['field2'].'
'; } mysqli_close($conn);
通過以上兩個示例可以看出,使用MySQLi可以用一行代碼完成數據庫連接和數據庫選擇的操作,而使用MySQL則需要兩行代碼。另外,MySQLi提供的mysqli_real_escape_string()函數可以對輸入進行安全過濾,避免SQL注入攻擊。使用MySQLi時要注意,它不再支持一些過時的MySQL函數和選項,如CALL和SET OPTION。