ホームページ >バックエンド開発 >PHPチュートリアル >php mysql PDOの使用、phpmysqlpdo use_PHPチュートリアル
<span> 1</span> <?<span>php </span><span> 2</span> <span>$dbh</span> = <span>new</span> PDO('mysql:host=localhost;dbname=access_control', 'root', ''<span>); </span><span> 3</span> <span>$dbh</span>->setAttribute(PDO::ATTR_ERRMODE, PDO::<span>ERRMODE_EXCEPTION); </span><span> 4</span> <span>$dbh</span>-><span>exec</span>('set names utf8'<span>); </span><span> 5</span> <span>/*</span><span>添加</span><span>*/</span> <span> 6</span> <span>//</span><span>$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; </span> <span> 7</span> <span>$sql</span> = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; <span>$stmt</span> = <span>$dbh</span>->prepare(<span>$sql</span>); <span>$stmt</span>->execute(<span>array</span>(':login'=>'kevin2',':password'=>''<span>)); </span><span> 8</span> <span>echo</span> <span>$dbh</span>-><span>lastinsertid(); </span><span> 9</span> <span>/*</span><span>修改</span><span>*/</span> <span>10</span> <span>$sql</span> = "UPDATE `user` SET `password`=:password WHERE `user_id`=:userId"<span>; </span><span>11</span> <span>$stmt</span> = <span>$dbh</span>->prepare(<span>$sql</span><span>); </span><span>12</span> <span>$stmt</span>->execute(<span>array</span>(':userId'=>'7', ':password'=>'4607e782c4d86fd5364d7e4508bb10d9'<span>)); </span><span>13</span> <span>echo</span> <span>$stmt</span>-><span>rowCount(); </span><span>14</span> <span>/*</span><span>删除</span><span>*/</span> <span>15</span> <span>$sql</span> = "DELETE FROM `user` WHERE `login` LIKE 'kevin_'"; <span>//</span><span>kevin% </span> <span>16</span> <span>$stmt</span> = <span>$dbh</span>->prepare(<span>$sql</span><span>); </span><span>17</span> <span>$stmt</span>-><span>execute(); </span><span>18</span> <span>echo</span> <span>$stmt</span>-><span>rowCount(); </span><span>19</span> <span>/*</span><span>查询</span><span>*/</span> <span>20</span> <span>$login</span> = 'kevin%'<span>; </span><span>21</span> <span>$sql</span> = "SELECT * FROM `user` WHERE `login` LIKE :login"<span>; </span><span>22</span> <span>$stmt</span> = <span>$dbh</span>->prepare(<span>$sql</span><span>); </span><span>23</span> <span>$stmt</span>->execute(<span>array</span>(':login'=><span>$login</span><span>)); </span><span>24</span> <span>while</span>(<span>$row</span> = <span>$stmt</span>->fetch(PDO::<span>FETCH_ASSOC)){ </span><span>25</span> <span>print_r</span>(<span>$row</span><span>); </span><span>26</span> <span>} </span><span>27</span> <span>print_r</span>( <span>$stmt</span>->fetchAll(PDO::<span>FETCH_ASSOC)); </span><span>28</span> ?>
1 接続を確立します
リーリー永続リンク PDO::ATTR_PERSISTENT=>true
2. エラーの検出
リーリー
3. ビジネス
リーリー4. エラー処理
a.サイレントモード(デフォルトモード)
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_SILENT); //エラーを表示しません
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);//警告エラーを表示し、実行を続行します
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //致命的なエラーが発生しました。PDOException
リーリー1. query()を使用します
リーリー2. prepare、bindParam を使用して実行します (追加、変更、削除も可能です)
リーリー
3. 物事
リーリー
PDO の一般的に使用されるメソッド:
PDO::query() は主に、記録された結果 (PDOStatement) を返す操作、特に選択操作に使用されます。
PDO::exec() は主に結果セットを返さない操作用です。挿入、更新、その他の操作など。影響を受ける行の数を返します。
PDO::lastInsertId() は最後の挿入操作の最後の ID を返しますが、複数の項目を挿入するために insert into tb(col1,col2) value(v1,v2),(v11,v22).. を使用する場合には注意してください。レコードの場合、 lastinsertid() は、最後に挿入されたレコードのレコード ID ではなく、挿入された最初のレコード (v1、v2) の ID のみを返します。
PDOStatement::fetch() はレコードを取得するために使用されます。 while を使用してトラバースします。
PDOStatement::fetchAll() は、すべてのレコードを 1 つにフェッチします。
PDOStatement::fetchcolumn([int column_indexnum]) は、列に直接アクセスするために使用されます。ただし、このメソッドは、行内の 0 から始まる列のインデックス値を取得します。一度実行すると次の行にジャンプします。したがって、特定の列に直接アクセスする場合には使いやすいですが、複数の列を横断する場合には役に立ちません。
PDOStatement::rowcount() は、query("select...") メソッドを使用するときにレコード数を取得するのに適しています。前処理にも使用できます。 $stmt->rowcount();
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]]])
array pdostatement::fetchAll(int fetch_style)
fetch_style パラメータ:
■$row=$rs->fetchAll(PDO::FETCH_BOTH); FETCH_BOTH はデフォルトで、省略可能で、関連付けとインデックスを返します。
■$row=$rs->fetchAll(PDO::FETCH_ASSOC); FETCH_ASSOC パラメーターは、連想配列のみが返されることを決定します。
■$row=$rs->fetchAll(PDO::FETCH_NUM); インデックス配列を返します
■$row=$rs->fetchAll(PDO::FETCH_OBJ); fetchall() は、オブジェクトで構成される 2 次元配列を返します