ホームページ >バックエンド開発 >PHPチュートリアル >PHP の PDO
PDO の一般的なメソッド:
1. PDO::query() は主に、記録された結果が返される操作 (PDOStatement)、特に選択操作に使用されます。
2. PDO::exec() は主に結果セットを返さない操作に使用されます。挿入、更新、その他の操作など。影響を受ける行の数を返します。
3. PDO::lastInsertId() は最後の挿入操作の最後の ID を返しますが、insert into tb(col1,col2) を使用する場合、values(v1,v2),(v11,v22) に注意してください。 ). 一度に複数のレコードを挿入するメソッドでは、lastinsertid() は挿入時に最後に挿入されたレコードのレコード ID ではなく、最初のレコード (v1、v2) の ID のみを返します。
4. PDOStatement::fetch() を使用してレコードを取得します。 while を使用してトラバースします。
5. PDOStatement::fetchAll() は、すべてのレコードを 1 つにまとめます。
6. PDOStatement::fetchcolumn([int column_indexnum]) は、列に直接アクセスするために使用されます。パラメーター column_indexnum は、0 から始まる列のインデックス値です。ただし、このメソッドは取得することしかできません。列は一度に実行される限り、次の行にジャンプします。したがって、特定の列に直接アクセスする場合には使いやすいですが、複数の列を横断する場合には役に立ちません。
7. PDOStatement::rowcount() は、query("select...") メソッドを使用する場合のレコード数の取得に適しています。前処理にも使用できます。 $stmt->rowcount();
8. PDOStatement::columncount() は、query("select...") メソッドを使用するときにレコードの列数を取得するのに適しています。
注:
1. fetch または fetchall を選択しますか?
fetchall を使用すると効率が良く、データベースからの取得回数が減ります。ただし、結果セットが大きい場合、fetchall を使用するとシステムに大きな負担がかかります。データベースが WEB フロントエンドに送信する必要があるデータの量が多すぎるため、非効率的です。
2. fetch() または fetchall() にはいくつかのパラメーターがあります:
mixed pdostatement::fetch([int fetch_style [,int Cursor_orientation [,int Cursor_offset]]])
配列 pdostatement::fetchAll(int fetch_style)
fetch_style パラメータ:
1, $row=$rs- > ;fetchAll(PDO::FETCH_BOTH); FETCH_BOTH はデフォルトであり、省略可能であり、関連付けとインデックスを返します。
2. $row=$rs->fetchAll(PDO::FETCH_ASSOC); FETCH_ASSOC パラメーターは、連想配列のみが返されることを決定します。
3. $row=$rs->fetchAll(PDO::FETCH_NUM); インデックス配列
4. $row=$rs->fetchAll(PDO::FETCH_OBJ) を返します。 ) ; fetch() がオブジェクトを返す場合、fetchall() がオブジェクトの 2 次元配列を返す場合
/** * 数据库配置 */$dsn = 'mysql:dbname=test;host=127.0.0.1;port=3306';$username = 'root';$password = '123456';/** * 连接数据库 */try{ $db = new PDO($dsn, $username, $password);}catch(PDOException $e){ die('fail');}$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);$db->exec("SET CHARACTER SET utf8");/** * 查询 */$name = 'li';$sql = sprintf("SELECT * FROM %s WHERE name LIKE %s", 'user', $name);$stmt = $db->prepare($sql);$stmt->execute();while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ var_dump($row);}var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));/** * 添加 */$name = 'lilei'; $gender = 0;$sql = sprintf("INSERT INTO %s (name, gender) VALUES (%s, %d)", 'user', $name, $gender);$stmt = $db->prepare($sql);$stmt->execute();echo $db->lastInsertId();/** * 修改 */$id = 1; $name = 'hanmeimei'; $gender = 1;$sql = sprintf("UPDATE %s SET name = %s, gender = %d WHERE id = %d", 'user', $name, $gender, $id);$stmt = $db->prepare($sql);$stmt->execute();echo $stmt->rowCount();/** * 删除 */$id = 1;$sql = sprintf("DELETE FROM %s WHERE id = %d", 'user', $id);$stmt = $db->prepare($sql);$stmt->execute();echo $stmt->rowCount();/** * 断开连接 */$dbh=null;exit;