私の問題は次のとおりです
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 条件をメモリに保持していました
ありがとう、リチャード