問題タブ [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 - LIMIT句でbindValueメソッドを適用するにはどうすればよいですか?
これが私のコードのスナップショットです:
私は得る
SQL構文にエラーがあります。1行目の「15」、「15」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。
PDOがSQLコードのLIMIT部分の変数に一重引用符を追加しているようです。調べてみたところ、関連していると思われるこのバグが見つかりました:http: //bugs.php.net/bug.php? id=44639
それは私が見ているものですか?このバグは2008年4月から開かれています。その間に私たちは何をすべきでしょうか?
SQLステートメントを送信する前に、ページネーションを作成し、データがクリーンでSQLインジェクションに対して安全であることを確認する必要があります。
php - PHP PDO bindValue() が機能しない
問題は次の行にあります。$stmt->bindValue(":index", $_GET['index'], PDO::PARAM_INT);
特定のパラメーターは 2 番目のパラメーターです。
上記のコードは機能しません。何も返さないため、while ループは実行されません。$_GET['index'] を 10 などの数値に置き換えると、問題なく動作し、10 行が返されます。$_GET['index'] をエコーすると数値が表示されるため、数値を渡す必要があります。bindParam も試しましたが、結果は同じです。
なぜこれが機能しないのですか?
編集:
面白い...交換$_GET['index'] with (int)$_GET['index']
するとうまくいきます。
php - bindValueまたはBindParamがプリペアドステートメントを変更しないのはなぜですか?
テーブルユーザーに行を追加する関数を作成するために最新のphpを使用します。
addUser関数を実行すると、これはmysqlログファイルで実行されたクエリです。
ご覧のとおり、:varnameが適切な値に置き換えられていません。私は何が欠けていますか?
bindValueとbindParamの両方を試しましたが、同じ結果が得られました。
アップデート
:username
変更し:password
てに変更しても、?,?
使用
bindValue(1,$username)
しbindValue(2,$password)
ても同じ結果が得られます。実際に実行されるクエリ?,?
には、実際の変数ではなく、まだ含まれています。
php - PDO-> bindParam、PDO-> bindValue、PDO-> closeCursor
これまで使用してきPDO->bindParam
ましたが、マニュアルを読んでいるうちに、値でパスするのがわかりPDO->bindValue
ますが、参照でパスするのはこれだけですか?PDO->bindValue
PDO->bindParam
再び私が見つけたマニュアルを読んでいる間:PDO->closeCursor
私はそれをマークされた場所に置くべきですか?オプション/自動的に呼び出されますか?特定のドライバーだけがそれを必要としているようです。それを必要としない/サポートしていないドライバーでそれを呼び出すと、エラーが発生しますか?MySQLはどうですか?
php - PDOの%でどのようにbindValue?
これは私が持っているものです。
bindValue を実行しようとするとエラーが発生し、それを準備済みステートメントで使用します ( %:queryString% )
どうすればこれを解決できますか?
sql - bindvalue と % を使用してステートメントを準備するにはどうすればよいですか?
はい、以前は次のように見えた変数で bindvalues を使用しようとすると問題が発生します。
次のようになります。
しかし、それは機能しません。これも試しました:
そして、いくつかの構文エラーが発生しました..
これに対する正しい解決策は何ですか?bindValue(:firstname, $firstname%) に % を追加することも考えましたが、他の場所でも :firstname を使用する必要があります。
助けてくれてありがとう
php - bindValueはエスケープしません
php.netでコメントを読みました:
引用符をエスケープしますが
bindValue()
、「%」と「_」はエスケープしません。したがって、を使用するときは注意してLIKE
ください。自分でパラメータをエスケープしないと、%%%でいっぱいの悪意のあるパラメータがデータベース全体をダンプする可能性があります。PDOは、それを処理するための他のエスケープメソッドを提供していません。
それで、それは本当に%と_をエスケープしませんか?これに対する最善の解決策は何でしょうか?
php - どのように主キーに値をバインドしますか?
主キーに bindValue を使用することをお勧めしますか?
主キーの値はデータベースの結果から取得されます。
注: GET/POST クエリとは連動しません。
例えば:
php - PDOStatement :: bindValue()で変数タイプをどのように定義しますか?
PDOStatement :: bindValue()メソッドは、バインドされた変数のタイプを指定する方法を提供します。
PDOStatement :: bindValue($ parameter、$ value [、$ data_type = PDO :: PARAM_STR ])
データ型を指定する目的は何ですか?デフォルト(PARAM_STR
)のままにすると、データベースは最終的に値を使用する前に適切な型にキャストしますか?
たとえば、INTEGER
フィールドに対して次のクエリがある場合:
そして、PHPで整数をバインドすると、PDOはデフォルトでそれを文字列としてバインドします。これは次のように相当します。
SQLデータベース(少なくともMySQL、他のRDBMSでどのように機能するかはわかりません)は、文字列を使用する前に整数に変換する方法を知っているため、これは問題なく機能します。
バインドされた型付きパラメーターと文字列に違いが生じるユースケースは何ですか?