問題タブ [pdo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
13 に答える
143565 参照

php - mysqli または PDO - 長所と短所は何ですか?

私たちの場所では、プリペアド ステートメントやトランザクション サポートなどのために、mysqli と PDO の使用に分かれています。一部のプロジェクトでは一方を使用し、一部のプロジェクトでは他方を使用します。別の RDBMS に移行する現実的な可能性はほとんどありません。

私が PDO を好むのは、準備済みステートメントに名前付きパラメーターを使用できるという 1 つの理由からです。私の知る限り、mysqli は使用できません。

プロジェクトを統合して 1 つのアプローチのみを使用する際に、標準として 1 つを選択することに他に長所と短所はありますか?

0 投票する
7 に答える
37267 参照

pdo - 永続的なDB接続-そうですか、それともそうですか?

私はプロジェクトのデータアクセスにPHPのPDOレイヤーを使用していますが、それを読んで、永続的なDB接続を適切にサポートしていることを確認しています。いつ/いつ使うべきか迷っています。CRUDを多用するアプリでパフォーマンス上のメリットはありますか?おそらくセキュリティに関連して、考慮すべき欠点はありますか?

重要な場合は、MySQL5.xを使用しています。

0 投票する
4 に答える
2469 参照

php - SQL でクエリを実行するときにサイトをページ分割する最も効率的な方法は何ですか?

Web ページで使用する SQL クエリの結果をページ分割しようとしています。言語とデータベース バックエンドは PHP と SQLite です。

私が使用しているコードは次のように機能します(ページ番号は0から始まります)

http://example.com/table?page=0

これよりもページネーションを行う効率的な方法はありますか?

現在の方法で見られる問題の 1 つは、表示を開始する前に、10 個すべて (または多数) の結果をメモリに格納する必要があることです。これを行うのは、PDO が行数が使用可能になることを保証しないためです。

COUNT(*)クエリを発行して存在する行数を確認し、結果をブラウザにストリーミングする方が効率的ですか?

これは、「テーブルのサイズと、count(*)クエリがデータベース バックエンドで完全なテーブル スキャンを必要とするかどうかによって異なります」、「自分でプロファイリングを行う」ような質問の 1 つですか?

0 投票する
1 に答える
2000 参照

php - プリペアドステートメントはどのように機能しますか?

私はいくつかのDBルーチンを作成しており、プリペアドステートメントを使用しています。私の環境はPHP5を使用したPDOです。

プリペアドステートメントは、主にパフォーマンス上の利点と、入力データを手動でSQLエスケープする必要がないなどの補助的なボーナスを提供することを理解しています。

私の質問はパフォーマンスの部分についてです。

以下に、製品IDを取得してその価格を返すgetPrice関数の2つの実装があります。

getPrice_Aは、同じスクリプト実行内の後続の呼び出しで同じPDOStatementオブジェクトを再利用します。これは必要ですか、それとも推奨されますか?もしそうなら、すべての単一モデルのすべての単一のget *()にこの余分なコードが重複するのを避ける方法はありますか?

getPrice_Bは、呼び出しごとに新しいPDOStatementオブジェクトを作成します。DBMSは、このステートメントがすでに準備されていることを認識し、それでも一部の作業をスキップできますか?言い換えると、この実装は、プリペアドステートメントのパフォーマンス上の利点を適切に活用していますか?

これをすべて書き留めて読み終え​​たので、getPrice_Bは問題なく、getPrice_Aはその上にごくわずかなメリットしか提供していないと思います。これは、余分な複雑さの価値がある場合とない場合があります。

それでも、もっと知識のある人から確実に聞きたいです。

$pdo以下の例では、これが有効な接続されたPDOオブジェクトであると想定しています。

0 投票する
2 に答える
2757 参照

php - PDO でバインドされたパラメーターを使用してあいまい検索を行うにはどうすればよいですか?

こういうことをしようと...

...しかし、バインドされたパラメーターを PDO の準備済みステートメントに使用しています。例えば:

一重引用符と % 記号のさまざまな順列を試しましたが、うまくいきません。

以前のある時点でこれと格闘したことを覚えているようですが、参照が見つかりません。名前付きパラメーターを使用してPDOでこれをうまく行う方法を知っている人はいますか?

0 投票する
6 に答える
9481 参照

php - SQLite/PHP 読み取り専用?

私はPHPのPDOラッパーでSQLiteを使用しようとしましたが、成功はまちまちでした。データベースからは正常に読み取ることができますが、ブラウザでページを表示すると、更新がデータベースにコミットされません。興味深いことに、シェルからスクリプトを実行すると、データベースが更新されます。ファイルのアクセス許可が原因ではないかと疑っていましたが、データベースがフル アクセス (chmod 777) を提供していても問題は解決しません。ファイルの所有者を変更してみる必要がありますか? もしそうなら、どうする?

ちなみに、私のマシンは標準の Mac OS X Leopard インストールで、PHP が有効になっています。

@トム・マーティン

お返事ありがとうございます。コードを実行したところ、PHP がユーザー _www として実行されているようです。次に、データベースを_wwwが所有するようにチャウニングしようとしましたが、それもうまくいきませんでした。

PDO の errorInfo 関数は、エラーが発生したことを示していないことにも注意してください。これは、何らかの方法でデータベースを読み取り専用で開く PDO の設定でしょうか? SQLite はファイル全体に対して書き込みロックを実行すると聞いたことがあります。書き込みを妨げている何かによってデータベースがロックされている可能性はありますか?

問題のコードを含めることにしました。これは多かれ少なかれ、Grant のスクリプトを PHP に移植したものになります。これまでのところ、質問セクションのみです。

0 投票する
5 に答える
23710 参照

eclipse - Mac での PostgreSQL 用の PDO ドライバーのインストール (Zend for Eclipse を使用)

Mac (os x 10.5) で PDO を動作させるにはどうすればよいですか? Zend/Eclipse で組み込みの php と php を使用しています。便利なドライバーがまったく見つからないようです。

0 投票する
7 に答える
238717 参照

php - SQL インジェクションを防ぐには、PDO 準備済みステートメントで十分ですか?

次のようなコードがあるとします。

PDOのドキュメントには次のように書かれています:

準備済みステートメントのパラメーターは引用符で囲む必要はありません。ドライバーがそれを処理します。

SQL インジェクションを回避するために必要なことは本当にそれだけですか? それは本当に簡単ですか?

違いがある場合は、MySQL を想定できます。また、SQL インジェクションに対するプリペアド ステートメントの使用についてのみ興味があります。このコンテキストでは、XSS やその他の潜在的な脆弱性については気にしません。

0 投票する
2 に答える
1408 参照

php - PHP での bindParam 上書きのエラー

これは少し奇妙で、これを完全に間違ってコーディングしている可能性があります。そのため、スクリプトのまったく異なる部分で、2 日間で 2 回同じエラーに遭遇したのです。私が使用しているコードは以下のとおりです。

私はPDOの使用にかなり慣れていませんが、基本的には制約の配列を渡そうとしています.

ーブルからすべての行を返しますp>

この配列を使用すると、最初から実行された SQL

まさに私の予想通りです。バインドされたパラメーターは、「Binding active to 1」と「Binding name to James」を正確に出力します。行はデータベースに存在しますが、2 番目の行はresults の呼び出しは何も出力しません。つまり、行は返されません。

単一の制約の配列を渡すと、たとえば

これは完全に正常に機能します。複数の制約が渡されるたびに、機能しなくなるようです。

0 投票する
3 に答える
56303 参照

php - PHP で PDO を介して MySQL クエリをループするにはどうすればよいですか?

LAMP websites関数からmysql_関数へとすべての機能をゆっくりと移動していPDOて、最初のレンガの壁にぶつかりました。パラメータを使用して結果をループする方法がわかりません。私は次のことで大丈夫です:

ただし、次のようなことをしたい場合:

明らかに「何か他のもの」は動的になります。