PHP:MySQL數據庫訪問(mysqli & PDO)
一. 使用mysqli訪問數據庫
1. 連接數據庫
$db = new mysqli("localhost", "username", "password", "databaseName"); 或者: @ $db = mysqli_connect("localhost", "username", "password", "databaseName");
2. 關閉數據庫
$db->close(); 或者: mysqi_close($db);
3. 選擇使用的數據庫
$db->select_db(databaseName); 或者: mysqli_select_db(databaseName);
4. 查詢數據庫
查詢:
$query = "SELECT * from dbName"; $result = $db->query($query); 或者: mysqli_query($db, $query);
5. 檢索查詢結果
(1)查詢結果的行數:
$num_results = $result->num_rows; 或者: $num_results = mysqli_num_rows($result);
(2)查詢結果的每一行內容:
$row = $result->fetch_assoc(); 或者: $row = mysqli_fetch_assoc($result);
獲取每一行的字段的值:
$row["books"]
(3)獲取查詢結果的列舉數組:
$row = $result->fetch_object(); 或者: $row = mysqli_fetch_object($result);
然后可以通過$row[0}、$row[1]或$row->title、$row->author等來訪問每個屬性。
6. 釋放結果集
$result->free();
或者:
mysqli_free_result($result);
</div>二. 使用PDO訪問數據庫
1. 連接數據庫
$mysql = new PDO("mysql:host=localhost", $user, $password); $mysql = new PDO("mysql:host=localhost;port=8090", $user, $password); $mysql = new PDO("mysql:host=localhost;port=8090;dbname=android", $user, $password); // 連接到一個本地MySQL服務器 $mysql = new PDO("mysql:unix_socket=/tmp/mysql.sock", $user, $password);
譬如:
$dbhost = "localhost"; $dbdatabase = "android"; $username = "android"; $userpass = "android";$dsn='mysql:host='.$dbhost.';dbname='.$dbdatabase;
try { $dbh = new PDO($dsn,$username,$userpass); foreach($dbh->query('SELECT * from test') as $row) { print_r($row); } // 關閉數據庫連接 $dbh = null; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); }</pre>
2. 關閉數據庫
$conn = null;3. 持久化連接
<?php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(PDO::ATTR_PERSISTENT => true)); ?>4. 想數據庫中插入數據
try {
$dbh->beginTransaction(); $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')"); $dbh->exec("insert into salarychange (id, amount, changedate) values (23, 50000, NOW())"); $dbh->commit();} catch (Exception $e) { $dbh->rollBack(); echo "Failed: " . $e->getMessage(); }</pre>
PDO 類的常用方法:
方法名 | 描述 | </tr> </tbody>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
commit() | 提交一個事務。 | </tr>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
__construct() | 創建一個表示數據庫連接的 PDO 實例。 | </tr>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
errorInfo() | 返回最后一次操作數據庫的錯誤信息。 | </tr>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
exec() | 執行一條 SQL 語句,并返回受影響的行數。 | </tr>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
getAttribute() | 取回一個數據庫連接的屬性。 | </tr>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
lastInsertId() | 返回最后插入行的ID或序列值。 | </tr>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
prepare() | 備要執行的SQL語句并返回一個 PDOStatement 對象。 | </tr>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
query() | 執行 SQL 語句,返回PDOStatement對象,可以理解為結果集。 | </tr>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
quote() | 為SQL語句中的字符串添加引號。 | </tr>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
setAttribute() | 設置屬性。 | </tr> </tbody> </table>
方法名 | 描述 | </tr> </tbody>|||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bindColumn() | 綁定一列到一個 PHP 變量。 | </tr>|||||||||||||||||||||||||
bindParam() | 綁定一個參數到指定的變量名。 | </tr>|||||||||||||||||||||||||
bindValue() | 把一個值綁定到一個參數。 | </tr>|||||||||||||||||||||||||
closeCursor() | 關閉游標,使語句能再次被執行。 | </tr>|||||||||||||||||||||||||
columnCount() | 返回結果集中的列數。 | </tr>|||||||||||||||||||||||||
debugDumpParams() | 打印一條 SQL 預處理命令。 | </tr>|||||||||||||||||||||||||
errorCode() | 獲取跟上一次語句句柄操作相關的 SQLSTATE。 | </tr>|||||||||||||||||||||||||
errorInfo() | 獲取跟上一次語句句柄操作相關的擴展錯誤信息。 | </tr>|||||||||||||||||||||||||
execute() | 執行一條預處理語句。 | </tr>|||||||||||||||||||||||||
fetch() | 從結果集中獲取下一行。 | </tr>|||||||||||||||||||||||||
fetchAll() | 返回一個包含結果集中所有行的數組。 | </tr>|||||||||||||||||||||||||
fetchColumn() | 從結果集中的下一行返回單獨的一列。 | </tr>|||||||||||||||||||||||||
fetchObject() | 獲取下一行并作為一個對象返回。 | </tr>|||||||||||||||||||||||||
getAttribute() | 檢索一個語句屬性。 | </tr>|||||||||||||||||||||||||
getColumnMeta() | 返回結果集中一列的元數據。 | </tr>|||||||||||||||||||||||||
nextRowset() | 在一個多行集語句句柄中推進到下一個行集。 | </tr>|||||||||||||||||||||||||
rowCount() | 返回受上一個 SQL 語句影響的行數。 | </tr>|||||||||||||||||||||||||
setAttribute() | 設置一個語句屬性。 | </tr>|||||||||||||||||||||||||
setFetchMode() | 為語句設置默認的獲取模式。 | </tr> </tbody> </table>