9

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

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

insert into `nvp_notes` (subject,messageid,receivedate,read) values (?,?,?,?)

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

$stmt->bind_param('sdsd', ...);

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

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

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

4

3 に答える 3

13

intval()を使用してブール値を 1 または 0 に変換できます(または(int)または(integer)でキャスト)。mysqli_stmt::bind_param() のドキュメントによると、バインドできる型は int、double、string、および blob のみです。

于 2009-01-20T00:06:12.087 に答える
1

答えてくれてありがとう、私はついに問題を修正することができました(型キャストを試し、クエリで1または0として修正することでbind_paramから除外した後)。とにかく、「read」はMySQLで予約されている列名なので、列名を変更しただけで問題なく動作します。しかし、この種の問題については、その特定のエラーメッセージを受け取るのは奇妙に思えます。

于 2009-01-20T11:33:26.893 に答える
0

バインドする必要があるのは実際には整数なので、「d」(double) を「i」で切り替えます。

$stmt->bind_param('sisi', ...);

于 2014-07-12T11:16:36.963 に答える