PDOメソッドを使ったphpの詳しい説明、phppdoの詳しい説明
この記事では、PHP で PDO を使用する方法を詳しく分析します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
PDO::exec: 結果に影響を与える項目の数を示す int 型を返します。
コードをコピーします コードは次のとおりです:
PDOStatement::execute
返されるものはブール型で、true は実行の成功を示し、false は実行の失敗を示します。これら 2 つは通常、次のコードに表示されます:
コードをコピーします コードは次のとおりです:
$rs0 = $pdo->exec($sql);
$pre = $pdo->prepare($sql);
$rs1 = $pre->execute();
通常、$rs0 の値を使用して SQL 実行が成功したかどうかを判断できます。値が false の場合は SQL 実行が失敗したことを意味し、0 は変更がないことを意味し、0 より大きい値はその回数を意味します。記録に影響が出ました
ただし、$rs1 は SQL の実行が成功したかどうかのみを返すことができ、影響を受けるレコードの数を取得する必要がある場合は、$pre->rowCount();
を使用する必要があります。
私は個人的に MySQL を使用するのが好きなので、extensions.ini に次の 2 行を入れています。
コードをコピーします コードは次のとおりです:
extension=pdo.so
拡張機能=pdo_mysql.so
その後、プログラム内のコードは次のようになります:
コードをコピーします コードは次のとおりです:
define('DB_NAME','test');
定義('DB_USER','テスト');
定義('DB_PASSWD','テスト');
定義('DB_HOST','ローカルホスト');
定義('DB_TYPE','mysql');
$dbh = 新しい PDO(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWD);
この記事で使用している定数の設定は、私ほど面倒なことは必要ありません。$dbh 自体が PDO の接続を表します。
最初の遅延メソッド
クエリは、何も考えず、通常どおりクエリ関数を使用します。コードは次のとおりです:
コードをコピーします
コードは次のとおりです:
$sql = 'select * from test';
foreach ( $dbh->query($sql) を $value として)
{
エコー $value[col];
};
2 番目の方法は、PDO を使用した後、準備関数を使用して、最初に SQL コードを記述し、後で必要なデータを自動的にインポートすることです。
これの最大の利点は、クエリを直接使用する場合と比較して、多くのセキュリティ問題を軽減できることだと思います。まず、prepare を使用して SQL コードを設定し、次に、bindparm を使用して設定アクションを実行します。
コードは次のとおりです。
コードをコピーします
コードは次のとおりです:$sth = $dbh->prepare('update db set zh_CN= :str where SN=:SN');
$sth->bindParam(':str',$str,PDO::PARAM_STR,12);
$sth->bindParam(':SN',$SN);
$sth->execute();
テキスト内の :str と :SN に注意してください。bindParam 関数を使用する場合、システムが適用する必要がある部分を :word で指定できます。たとえば、 :str と :SN を使用して指定します。実際の内容はbindParamに依存し、入力したい型を指定することもできます。
まず、:str の仕様を見ていきます。データはテキストであると確信しているので、PD::PARAM_STR を使用してプログラムに「これは文字列である」と範囲、つまり長さを与えます。は12ビットです。
:SN のように、それほど複雑ではないこともあります。これも bindingParam を使用して指定されますが、型と長さは省略されます。PHP は適用する変数のデフォルトの型を使用します。
最後に、$sth->execute(); を使用して実行アクションを実行します。これは基本的には難しくなく、非常に簡単であるとさえ言えます。
繰り返し適用する必要がある大量のデータがある場合は、bindParam を再利用して指定することができます。たとえば、データが 10 個ある場合、str と SN を直接追加することもできます。コードは次のようになります:
コードをコピーします
コードは次のとおりです:
$sth = $dbh->prepare('insert into db ("zh_CN","zh_TW")values(:str , :SN');
foreach ($array => $value )
{
$sth->bindParam(':str',$value[str],PDO::PARAM_STR,12);
$sth->bindParam(':SN',$value[SN]);
$sth->execute();
}
私の友人のような強い人でも、可能な限りすべての SQL をファイルの最後に記述します。その後、プロセス SQL 部分はすべて変数で持ち込まれます。とにかく、データは既成の方法で適用できます。
次に、prepare メソッドを使用して選択する場合、もちろん、上記のように word を使用してキーワードを指定することもできます。コードは次のとおりです。
コードをコピーします
コードは次のとおりです:
$sth = $dbh->prepare('select * from db where SN = :SN');
$sth->bindParam(':SN',$value[SN]);
$sth->execute();
while($meta = $sth->fetch(PDO::FETCH_ASSOC))
{
エコー $meta["名前"]
}
新しく登場するのは fetch で、mysql_fetch_row() と同様の意味を持ちますが、fetch() には PDO::FETCH_ASSOC と呼ばれる追加の機能があります。
fetch() はデータを取得するためのさまざまな方法を提供し、PDO::FETCH_ASSOC は次のデータのフィールド名と値を返すことを指します
例えば、上記の例では、fetchで返されたデータを取得するために$metaを使用します。このとき、$metaの要素名はデータベースのフィールド名で、中身はもちろん値そのものです。 mysql_fetch_row() を使用する場合とは異なります。mysql_fetch_row() は、フィールド名に加えて、シリアル番号に基づいて要素名も付与します。PDO にはそれがありません。
もちろん、PDO::FETCH_ASSOC を PDO::FETCH_BOTH に変更する限り、使い方は mysql_fetch_row() と変わりません。
デバッグ方法
デバッグはすべてのプログラマーにとって永遠の苦痛です。PDO を使用する場合、どのようにデバッグすればよいでしょうか?
実際、PDO はすでに 2 つの非常に便利な関数 errorInfo() と errorCode() を提供しています
使用方法も非常に簡単です。execute() を使用して実行するときは、エラーが発生した場合は、errorInfo() と errorCode() の内容が次のようになります。
コードをコピーします
コードは次のとおりです:$sth = $dbh->prepare('select * from db where SN = :SN');
$sth->bindParam(':SN',$value[SN]);
$sth->execute();
if ($sth->errorCode())
{
echo "エラーがあります! エラーがあります!";
print_r($sth->errorInfo());
}
$sth->errorInfo() は配列になり、この配列には 3 つの値があります:
0はSQLSTATEエラーコードです
1 使用しているドライバーから返されるエラーコード
2 使用しているドライバーから返されるエラーメッセージ
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/933594.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/933594.html
技術記事 php の PDO メソッドの使用方法の詳細な説明 phppdo の詳細な説明 この記事では、php の PDO メソッドの使用方法について詳しく説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです: PDO::exec: 影響結果を示す int 型を返します...