Моя проблема заключается в следующем
Y имеют две функции, вызываемые изнутри функции (метода)
Если результатом первой функции является TRUE, вторая функция выполняет запрос выбора и обновления.
Вторая функция выполняет выбор с помощью команды query ($ sql) В запросе обновления используется:
$stmt = $db->prepare($sql);
$stmt->execute(arraywithvalues);
обе функции работают отлично, но не тогда, когда они вызываются как другими словами, к тому моменту, когда вторая функция должна быть выполнена, она потерпит неудачу. Если я прокомментирую первую функцию, она будет выполнена нормально?
ИЗМЕНИТЬ
Запрос на обновление
$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) reset_passw(), который выполняет один выбор, а затем обновление. Обе функции работают нормально, как я сказал выше.
ошибка: найдена одна
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 удерживал условия в памяти
спасибо, Ричард
(Это было решено некоторое время назад OP и решением, отредактированным в вопросе, так что оно оставалось в оставшейся без очереди очереди. Скопировано здесь как ответ wiki сообщества, чтобы отразить статус, хотя ответ был очень коротким. см. Вопрос без ответов, но проблема решена в комментариях (или добавлена в чат))
OP писал (а):
Последняя ошибка установила меня по правильному пути. Класс
dbabstraction
содержал условия в памяти
$stmt = $db->prepare(...
роль междуif ($rows)
$stmt = $db->prepare(...
if ($rows)
и вторым$stmt = $db->prepare(...
кажется, что :-)