0

私の問題は次のとおりです

Yには、関数(メソッド)内から呼び出される2つの関数があります

最初の関数の結果が TRUE の場合、2 番目の関数は選択クエリと更新クエリを実行します。

2 番目の関数は、query($sql) コマンドで選択を実行します。更新クエリは次を使用します。

$stmt = $db->prepare($sql);
 $stmt->execute(arraywithvalues);

別々に、両方の関数は完全に機能しますが、両方が呼び出された場合、つまり、2 番目の関数を実行する必要があるまでに失敗します。最初の関数をコメントアウトすると、正常に実行されますか?

編集

更新クエリ

$tt = time() - 3600;
$w =array(NULL, NULL, $passw_new, $passw_key_new, $user_id);
$sql ="UPDATE table SET new_passw_requested =?";
$sql .=" WHERE passw_key_new='b02cdf33e46923de5a097c594e846764'";
$sql .=" AND UNIX_TIMESTAMP(new_passw_requested) >= $tt";
$sql .= " AND id=?";

実際の機能は . 1)選択クエリを実行するcan_reset_passw()、2)1つの選択と更新を実行するreset_passw()。上で述べたように、両方の機能は独立して問題なく動作します。

エラー: 1 つ見つかりました

SELECT * FROM table WHERE id = :id AND actief = :actief
Array ( [0] => SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens ) 

だから何かがそれを台無しにしている

$stmt = NULL を設定してリソースをクリアしようとしましたが、うまくいきませんでした。どういうわけか、最初の選択からのトークンがまだメモリに残っていると思います

これを修正するにはどうすればよいですか?

解決した

最後のエラーは、私を正しい道に導きました。dbabstraction クラスは de 条件をメモリに保持していました

ありがとう、リチャード

4

1 に答える 1

0

(これはOPによって少し前に解決され、解決策は質問で編集されたため、未回答のキューに残りました。回答は非常に短かったものの、ステータスを反映するためにコミュニティwikiの回答としてここにコピーされました。誰かが回答できる場合ここで編集できるより一貫性のある.回答がない質問を参照してください。

OP は次のように書いています。

最後のエラーは、私を正しい道に導きました。dbabstractionクラスは de 条件をメモリに保持していました

于 2015-01-27T09:38:13.470 に答える