タグ付けされた質問 「pdo」

PDO(PHPデータオブジェクト)は、PHPのデータアクセス抽象化レイヤー(インターフェイス)です。ほとんどのデータベースシステムで動作します。

7
PDOの準備済みステートメントはSQLインジェクションを防ぐのに十分ですか?
私がこのようなコードを持っているとしましょう: $dbh = new PDO("blahblah"); $stmt = $dbh->prepare('SELECT * FROM users where username = :username'); $stmt->execute( array(':username' => $_REQUEST['username']) ); PDOドキュメントは言う: 準備済みステートメントのパラメーターは引用符で囲む必要はありません。ドライバーが処理します。 SQLインジェクションを回避するために本当に必要なことはそれだけですか?本当にそんなに簡単ですか? それが違いを生む場合、MySQLを想定できます。また、SQLインジェクションに対するプリペアドステートメントの使用についてのみ興味があります。このコンテキストでは、XSSやその他の考えられる脆弱性については気にしません。

21
配列をIN()条件にバインドできますか?
PDOを使用して値の配列をプレースホルダーにバインドできるかどうか知りたいです。ここでの使用例は、IN()条件で使用する値の配列を渡そうとしています。 私はこのようなことができるようになりたいです: <?php $ids=array(1,2,3,7,8,9); $db = new PDO(...); $stmt = $db->prepare( 'SELECT * FROM table WHERE id IN(:an_array)' ); $stmt->bindParam('an_array',$ids); $stmt->execute(); ?> そして、PDOにバインドして、配列内のすべての値を引用します。 現在私はやっています: <?php $ids = array(1,2,3,7,8,9); $db = new PDO(...); foreach($ids as &$val) $val=$db->quote($val); //iterate through array and quote $in = implode(',',$ids); //create comma separated list $stmt = …


13
mysqliまたはPDO-長所と短所は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 私たちの代わりに、mysqliとPDOを使用して、準備されたステートメントやトランザクションサポートなどを分割します。プロジェクトによっては、一方を使用するものと、もう一方を使用するものがあります。私たちが別のRDBMSに移行する現実的な可能性はほとんどありません。 PDOは、準備されたステートメントに名前付きパラメーターを許可するという単一の理由で、MySQLiが許可していない限り、PDOを好みます。 プロジェクトを統合して1つのアプローチのみを使用する場合、標準として他のものを選択することについて他に長所と短所はありますか?

30
PDOException SQLSTATE [HY000] [2002]そのようなファイルまたはディレクトリはありません
(非常に基本的な)サイトをfortrabbitに正常に展開できたと思いますが、SSHに接続していくつかのコマンド(php artisan migrateまたはなどphp artisan db:seed)を実行するとすぐに、エラーメッセージが表示されます。 [PDOException] SQLSTATE[HY000] [2002] No such file or directory テーブルがそこにあるので、ある時点で移行はうまくいったはずです-しかし、これはなぜそれが今私のために働いていないのかを説明していません。
319 php  mysql  laravel  pdo 

30
PDOException「ドライバーが見つかりませんでした」
Debian LennyにApache、MySQL、およびPHPをインストールしたところ、PDOExceptionが発生しましたcould not find driver。 これは、参照している特定のコード行です。 $dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS) DB_HOST、DB_NAME、DB_USER、とDB_PASS私は定義した定数です。本番サーバー(および以前のUbuntuサーバーのセットアップ)では正常に動作します。 これは私のPHPインストールと関係がありますか? インターネットの検索は役に立ちませんでした、私が得るすべては専門家交換と例ですが、解決策はありません。
292 php  mysql  pdo  lamp 

7
PHP PDOステートメントは、テーブルまたは列の名前をパラメーターとして受け入れることができますか?
作成したPDOステートメントにテーブル名を渡せないのはなぜですか? $stmt = $dbh->prepare('SELECT * FROM :table WHERE 1'); if ($stmt->execute(array(':table' => 'users'))) { var_dump($stmt->fetchAll()); } SQLクエリにテーブル名を挿入する別の安全な方法はありますか?安全とは、私がしたくないことを意味します $sql = "SELECT * FROM $table WHERE 1"
243 php  pdo 

23
PDOでの行数
多くの矛盾する発言があります。PHPでPDOを使用して行数をカウントする最良の方法は何ですか?PDOを使用する前は、単にを使用しましたmysql_num_rows。 fetchAll 時々大きなデータセットを扱っている可能性があるので、私は使いたくないものです。 何か提案はありますか?
192 php  mysql  pdo 

10
PHP PDO:文字セット、名前の設定?
私は以前これを通常のmysql_ *接続で以前持っていました: mysql_set_charset("utf8",$link); mysql_query("SET NAMES 'UTF8'"); PDOに必要ですか?そして、どこに持っていけばいいですか? $connect = new PDO("mysql:host=$host;dbname=$db", $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
188 php  mysql  pdo 

8
PDOで永続的な接続を使用することの欠点は何ですか
PDOでは、PDO::ATTR_PERSISTENT属性を使用して接続を持続させることができます。PHPマニュアルによると- 永続的な接続はスクリプトの最後では閉じられませんが、キャッシュされ、別のスクリプトが同じ資格情報を使用して接続を要求すると再利用されます。永続的な接続キャッシュを使用すると、スクリプトがデータベースと通信する必要があるたびに新しい接続を確立するオーバーヘッドを回避できるため、Webアプリケーションが高速になります。 また、PDO ODBCドライバーの使用中は永続的な接続を使用しないことをお勧めします。これは、ODBC接続プーリングプロセスを妨げる可能性があるためです。 したがって、最後のケースを除いて、PDOで永続的な接続を使用することには欠点がないようです。ただし、このメカニズムを使用することの他の欠点、つまり、このメカニズムによってパフォーマンスが低下するなどの状況があるかどうかを知りたいです。
181 php  pdo 

30
Laravel移行エラー:構文エラーまたはアクセス違反:1071指定されたキーが長すぎます。キーの最大長は767バイトです
Laravel 5.4での移行エラー php artisan make:auth [Illuminate \ Database \ QueryException] SQLSTATE [42000]:構文エラーまたはアクセス違反:1071指定されたキーが長すぎます。キーの最大長は767バイトです(SQL:alter tabl e usersadd unique users_email_unique(email)) [PDOException] SQLSTATE [42000]:構文エラーまたはアクセス違反:1071指定されたキーが長すぎます。キーの最大長は767バイトです

3
PDOは最後に挿入されたIDを取得します
クエリがあり、最後に挿入されたIDを取得したい。フィールドIDは主キーであり、自動インクリメントです。 私はこのステートメントを使用する必要があることを知っています: LAST_INSERT_ID() このステートメントは、次のようなクエリで機能します。 $query = "INSERT INTO `cell-place` (ID) VALUES (LAST_INSERT_ID())"; しかし、次のステートメントを使用してIDを取得したい場合: $ID = LAST_INSERT_ID(); 私はこのエラーを受け取ります: Fatal error: Call to undefined function LAST_INSERT_ID() 何が悪いのですか?
158 php  mysql  database  pdo 

22
PDO Preparedは単一のクエリに複数の行を挿入します
現在、MySQLでこのタイプのSQLを使用して、1つのクエリに複数行の値を挿入しています。 INSERT INTO `tbl` (`key1`,`key2`) VALUES ('r1v1','r1v2'),('r2v1','r2v2'),... PDOの読み取り値では、準備済みステートメントを使用すると、静的クエリよりも優れたセキュリティが得られます。 したがって、準備されたステートメントを使用して「1つのクエリを使用して値の複数の行を挿入する」ことを生成できるかどうかを知りたいのです。 はいの場合、どのように実装できますか?

18
PDOデータベースクエリをデバッグする方法
PDOに移行する前に、PHPで文字列を連結してSQLクエリを作成しました。データベース構文エラーが発生した場合は、最終的なSQLクエリ文字列をエコーし​​、データベースで自分で試してみて、エラーが修正されるまで微調整してから、コードに戻すことができます。 準備されたPDOステートメントはより速く、より良く、より安全ですが、1つ気になるのは、データベースに送信される最終クエリが表示されないことです。Apacheログまたはカスタムログファイルの構文に関するエラー(catchブロック内のエラーをログに記録)を取得すると、エラーの原因となったクエリが表示されません。 PDOからデータベースに送信された完全なSQLクエリをキャプチャしてファイルに記録する方法はありますか?
140 php  sql  pdo 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.