問題タブ [bindparam]

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 投票する
3 に答える
20547 参照

php - ブール値のバインドに関する bind_param の問題

mysqli_stmt::bind_paramPHP5 で使用するブール値のバインドに問題があります。

SQL クエリは次のとおりです。

ここで、'read' は 0 または 1 の tinyint です。したがって、bind_param にリストするタイプは次のとおりです。

「sdsb」と「sdss」も試しましたが、何も機能していないようで、常に次のメッセージが表示されます。

警告: mysqli_stmt::bind_param(): 変数の数が、準備されたステートメントのパラメーターの数と一致しません

ステートメントの読み取りフィールドを削除すると、すべて正常に機能します。私はこれでアイデアを使い果たしました。確かにbind_paramはブール値で動作しますか?

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

php - mysqlPDOLIKEをバインドする方法

このクエリでは

'$partial%'変数をPDOにバインドしようとしています。これが最後にどのように機能するかわからない%

それでしょうか

どこ:partialにバインドされています$partial="somet"

またはそれは

どこ:partialにバインドされています$partial="somet%"

それともまったく違うものでしょうか?

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

php - bindValueまたはBindParamがプリペアドステートメントを変更しないのはなぜですか?

テーブルユーザーに行を追加する関数を作成するために最新のphpを使用します。

addUser関数を実行すると、これはmysqlログファイルで実行されたクエリです。

ご覧のとおり、:varnameが適切な値に置き換えられていません。私は何が欠けていますか?

bindValueとbindParamの両方を試しましたが、同じ結果が得られました。

アップデート

:username変更し:passwordてに変更しても、?,?使用 bindValue(1,$username)bindValue(2,$password)ても同じ結果が得られます。実際に実行されるクエリ?,?には、実際の変数ではなく、まだ含まれています。

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

php - PDO-> bindParam、PDO-> bindValue、PDO-> closeCursor

これまで使用してきPDO->bindParamましたが、マニュアルを読んでいるうちに、値でパスするのがわかりPDO->bindValueますが、参照でパスするのはこれだけですか?PDO->bindValuePDO->bindParam

再び私が見つけたマニュアルを読んでいる間:PDO->closeCursor私はそれをマークされた場所に置くべきですか?オプション/自動的に呼び出されますか?特定のドライバーだけがそれを必要としているようです。それを必要としない/サポートしていないドライバーでそれを呼び出すと、エラーが発生しますか?MySQLはどうですか?

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

php - php、mysqli-stmt.bind-param]:型定義文字列の要素数がバインド変数の数と一致しません

スクリプトを実行すると、次のエラーが発生します。

警告:mysqli_stmt :: bind_param()[mysqli-stmt.bind-param]:型定義文字列の要素の数が、205行目のC:\ wamp \ www\records.phpのバインド変数の数と一致しません

警告:mysqli_stmt :: execute()[mysqli-stmt.execute]:(HY000 / 2031):行206のC:\ wamp \ www\records.phpのプリペアドステートメントのパラメーターにデータが提供されていません

どうすれば修正できますか?bind_paramからパラメーターを数えましたが、私にとっては問題ないようです...

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

php - mysqliプリペアドステートメント、bindparamsを使用してNULLを挿入

MYSQLIbind_paramを使用して列にNULLを挿入できるかどうかを誰かが知っていますか。

で列をnullに設定したい場合がありますbind_param。そのようです...

明らかに、これは文字列として列にNULLを書き込むだけです。試しましたが、機能null\0ません。

$column2送信する値と、代わりに実際のnull値を等しくすることができる値があるかどうかを知りたいです。

それ以外の場合は、タイプリストとパラメーターリストを動的に作成し、を使用call_user_func_arrayしてバインディングを作成し、列がnullの場合に列が書き込まれないようにする必要があります。これは可能ですが、多くの厄介な余分なコードが発生するため、これを回避できるかどうか疑問に思っていました。

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

php - 更新クエリのステートメントを準備するにはどうすればよいですか?

次のコードを使用したmysqliクエリがあります。

ただし、すべてのデータはHTMLドキュメントから抽出されるため、エラーを回避するために、プリペアドステートメントを使用します。PHPのドキュメントbind_param()を見つけましたが、UPDATEの例はありません。

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

php - mysqli を使用して SQL インジェクションを防止する場合、NULL または CURRENT_DATE を設定する方法は?

mysqliPHPライブラリでは、メソッドbind_param()でパラメーターをクエリにバインドします。 bind_param()の最初の引数はtypes、各文字がデータ型パスを表す文字列です。たとえば、文字列は 's' です。

パラメータとして NULL または CURRENT_DATE をどのように表すことができますか?

たとえば、「CURRENT_DATE」を文字列として試してみましたが、「0000-00-00」として投稿されました。(私が知る限り、違法な日付である「0000-00-00」は、明らかにかなりの数であるNULLを使用しない人々にとってのNULLのmysqlismです)。

パラメータを使用して、NULL と CURRENT_DATE をどのように使用できますか?


@Johanは、NULLが機能することを指摘しました。テストでは、これは正しいように見えますが、そうではありません。最初の NULL パラメータから始めて、すべてのパラメータが NULL に設定されます。

デフォルト値はこれとは関係ありません。INSERT ではなく UPDATE で列を NULL または CURRENT_DATE に設定したいことが何度もあります。そのため、デフォルト値はトランザクションに影響しません。

また、不十分な点をカバーするためにトリガーを作成するという考えは、か​​なりmysqli悪いプログラミングです。私の時代にスパゲッティ トリガーを作成したことがあります。ログを更新するためのトリガーはその 1 つです。このようなトリガーは、コードが正しく維持される可能性がほとんどなく、定期的なメンテナンスの悪夢になります。

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

php - PDO で空の文字列の代わりに NULL を挿入する

Null 可能なフィールドがいくつかあるテーブルがあり、ユーザーが HTML フォーム フィールドに何も入力しない場合、空の文字列ではなく NULL をそのフィールドに挿入したい (これらのテーブルの SELECT の一部が後で次のような条件を使用するため、これは重要です)。 WHERE x IS NOT NULL として)。

ただし、このバージョンの bindParam コードは、NULL の代わりに空の文字列を null 許容フィールドに挿入します。

私はかなり読んでいて、これが代わりにフィールドに null を挿入する答えであることがわかりました:

ただし、これは、null 許容フィールドに渡されるすべてのパラメーターを事前にチェックして、それらが空であるかどうかを判断する必要があることを意味しPDO::PARAM_NULLますPDO::PARAM_STR。私はもちろんこれを行うことができますが、PDO が空の文字列に遭遇した場合に代わりに null を挿入するように指示する設定があることを望んでいました。

私はこれに出くわしました

しかし、それは効果がなく、さらなる調査により、これは途中ではなく、途中の記録にのみ影響すると考えています.

変数の事前チェック以外のオプションはありますか?