問題タブ [bindvalue]
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.
php - PDO の bindParam、bindValue、および foreach に関する潜在的なバグ
このコードでエラーが発生しました。
$ID (PrimaryKey) がデフォルトで MySQL データベースの AUTO-INCREMENTING 値ではない場合、次の点に注意してください。
DATETIME フィールドを除くすべてのフィールドは、データベースに挿入されたときに配列の最後の要素の値を取得します。すなわち
ID = $LastName FirstName = $LastName MiddleName = $LastName LastName = $LastName RegisteredDate = $RegisteredDate
bindValue を使用した場合も同様のエラーが出力されます。
だから私は結局使った
質問
このシナリオで bindParam または bindValue を使用するのではなく、すべてのデータがサニタイズされていると仮定して、execute($array_Bind) を使用することをお勧めしますか?
そうでない場合、bindParam または bindValue と配列を使用する方法はありますか?
これはバグですか、それともコーディング アーキテクチャが間違っていますか。
php - PHP PDO bindValue がバインドされないのはなぜですか?
データベースにクエリを実行する関数があります。
しかし、うまくいかないことがあります。ライン$this->_query->bindValue($x, $param);
は本来すべきことをしていません。拘束力はありません。関数にパラメーターがスローされた配列は問題ないようです。$sql
ステートメントも問題なく、次のように返されます。
これは bind メソッドを使用するのに最適なはずです。しかし、 foreach ループを通過した後、何も変更されておらず、 _query var は同じままです。したがって、DB へのエントリはまったく作成されません。また、エラー情報を使用するためにツリーを作成し、戻ってきました。
ここで何が欠けているのか、誰かが私に手がかりを与えることができますか?
php - PDO bindValue は他の入力に対しても機能しますが、これはなぜ機能しないのでしょうか?
ユーザーが本の属性を更新できるフォームを作成しています。ユーザーが「タイトル」、「作成者」、「説明」などの新しい値を入力できる動的に生成された HTML フォームがあり、次のようになります。
このフォームは、次のような php によって処理されます。
ポストで変更されたフィールドのみを渡すコードがフォームにあるため、これを switch ステートメントとして編成しました (ただし、各項目の一意のキーを持つ「bookidfield」入力は例外です)。必要なクエリのみが実行されます。
「タイトル」および「作成者」フィールドは正常に機能します。問題なく新しい値に更新されます。ただし、「説明」フィールドは常に「ブック ID フィールド」の値に更新されます。':bookid' パラメータを必要な本の ID に手動で変更すると、修正できます。
var_dump(_$POST)
次のように、正しいキー値が得られたと思われる場合:
しかし、私の SQL テーブルでは、書籍 184 のタイトルが「Gross Boogers and such」に、著者が「Franny Panties」に変更されますが、説明は「184」に変更されます。これは私の bindValue() の使用と関係があるはずですよね? それとも私のループと関係がありますか?フォームの名前の付け方ですか?私はそれが何であるかを見るためにあまりにも長い間それを見てきました。
Stackoverflow に感謝します。
php - 明示的なデータ型のない PHP PDO bindValue()
PDO で PHP オブジェクト指向を使用するアプリケーションに取り組んでいます。クエリの実行が失敗した理由の問題を見つけるのに何時間も苦労しました。配列にバインドする文字列形式のパラメーターとして値を指定したことがわかりました。すべてのパラメーターをクエリの疑問符プレースホルダーにバインドする一般的なループがあります。もちろん、パラメーターはすべて文字列形式であると見なされます。ただし、整数形式の列があります。(int)
orを使用して変数を整数にキャストしてもintval()
機能しませんでした。したがって、明示的なデータ型をに指定する必要があると思いますPDO::PDO_PARAM_INT
。しかし、私はすべてのクエリに対して次のようなコードを持っています:
クエリの例:
bindValue() 部分:
どうすればいいですか?この問題を解決するためにコードを変更するにはどうすればよいですか? コードのどの部分を変更する必要があるかどうかはわかりませんが、これの回避策を考えるのは困惑しています。前もって感謝します。
編集: PHP バージョン 5.3.10、PDO は Sybase に接続します
php - PDO BindValue が機能しない - 実行しても何も返されない
pdo で大きな問題が発生しました。誰も私を助けることができないようです - だから私は皆さんに尋ねることにしました :-)
Database-Connection は完全に機能し、errorInfo() の両方が次を返します。
さて、このコードはどういうわけか $row を取得しません。ただし、準備ステートメントを次の行に置き換えるとします。
(そして bindValue ステートメントを削除します) コードは魅力的に機能します!
エラーがまったくスローされないため、何が間違っているのかわかりません-あなたの誰かが私が試すことができることを知っていますか?
ありがとう