ホームページ  >  記事  >  バックエンド開発  >  phpの使い方を詳しく解説 PDO_PHPチュートリアル

phpの使い方を詳しく解説 PDO_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:06:45786ブラウズ

この記事では、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 行を入れています

拡張子=pdo.so
拡張子=pdo_mysql.so

その後、プログラム内で PDO?⒍? Tombδ?/p> を宣言する必要があります。

コード: [選択]

コードは次のとおりです コードをコピー

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の接続を表します

それでは、PDO を使用しますか?

最初の式は遅延メソッドクエリです

特に考える必要はありません。通常どおりクエリ関数を使用してください

コード: [選択]

コードは次のとおりですコードをコピー
$sql = 'テストから * を選択';

foreach ( $dbh->query($sql) as $value)
{
echo $value[col];
};

2つ目の方法は自動持ち込み方法をご用意しております

PDO を使用した後は、準備関数を使用してアクションを実行することを好みます

準備の利点は、最初に SQL コードを記述し、後で必要なデータを自動的に取り込めることです

これの最大の利点は、クエリを直接使用する場合と比較して、多くのセキュリティ問題を軽減できることだと思います

まず、prepare を使用して SQL コードを設定し、次に、bindparm を使用して設定アクションを実行します

コード: [選択]

コードは次のとおりですコードをコピー


記事内の :str と :SN に注目してください。bindParam 関数を使用する場合、システムが適用する必要がある部分を :word で指定できます。たとえば、 :str と :SN を使用して
を指定します。 実際の内容としては、bindParam で入力したい型を指定することもできます。

まず、:str の仕様を見ていきます。データはテキストであると確信しているので、PD::PARAM_STR を使用してプログラムに「これは文字列である」と範囲、つまり長さを与えます。は12ビットです。
:SN のようにその複雑さも回避できますが、bindParam を使用して指定することもできますが、PHP では変数のデフォルトの型が使用されます。

最後に、$sth->execute(); を使用して実行アクションを実行します。

基本的には難しいことはなく、非常に簡単とも言えます!

繰り返し適用する必要がある大量のデータがある場合は、bindParam を再利用して指定することもできます。たとえば、データが 10 個ある場合は、データベースに直接追加することもできます。このように

コード: [選択]

$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();

コードは次のとおりです コードをコピー

$sth = $dbh->prepare('データベースに挿入 ("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 を 1 つのファイルに記述すると、後続の SQL 部分の処理は変数とともに取り込まれます。
とにかく、データは既製の方法で適用できます。

その後、prepareを使ってselectすれば、もちろん上記のように:wordを使ってキーワードを指定することもできます


コード: [選択]

コードは次のとおりです コードをコピー

$sth = $dbh->prepare('select * from db where SN = :SN');
$sth->bindParam(':SN',$value[SN]);
$sth->execute();
while($meta = $sth->fetch(PDO::FETCH_ASSOC))
{
echo $meta["name"];
}


これは? 新しいものは fetch で、mysql_fetch_row() と同じ意味です
しかし、fetch() には PDO::FETCH_ASSOC という追加のものがあることがわかりました
fetch() はデータを取得するためのさまざまな方法を提供し、PDO::FETCH_ASSOC は次のデータのフィールド名と値を返すことを指します
たとえば、上記の例では、この時点で $meta を使用して fetch で返されたデータを取得します。 $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->errorInfo() は配列になり、この配列には 3 つの値があります
0はSQLSTATEエラーコードです
1 使用しているドライバーから返されたエラーコード
2 使用しているドライバーから返されるエラーメッセージ

コードをコピー
$sth->bindParam(':SN',$value[SN]);

$sth->execute();
if ($sth->errorCode())
{
echo "エラーがあります! エラーがあります!";
print_r($sth->errorInfo());
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/630674.html技術記事この記事では、php PDO の使用方法について詳しく説明します。詳しく知りたい人は、この記事を保存してください。 PDO::exec は int 型を返します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。