С помощью следующего фрагмента кода, как я знаю, что что-то было добавлено в db?
if ($stmt = $connection->prepare("insert into table (blah) values (?)")) { $stmt->bind_param("s", $blah); $stmt->execute(); $stmt->close(); }
Я думал, что следующая строка будет работать, но, видимо, нет.
if($stmt->affected_rows==-1){$updateAdded="N"; echo "failed";}
А затем используйте $ updatedAdded = "N", чтобы затем пропустить другие фрагменты кода дальше страницы, которые зависят от того, что указанная выше вставка прошла успешно.
Есть идеи?
Метод execute()
возвращает boolean
… поэтому просто выполните следующее:
if ($stmt->execute()) { // it worked } else { // it didn't }
Проверьте возвращаемое значение $ stmt-> execute ()
if(!$stmt->execute()) echo $stmt->error;
Обратите внимание, что строка кода выполняет команду execute (), поэтому используйте ее вместо текущего $ stmt-> execute () не после нее.
Просто проверьте страницы руководства любой функции, которую вы используете:
prepare () – возвращает объект оператора или FALSE, если произошла ошибка.
bind_param () – возвращает TRUE при успешном завершении или FALSE при сбое.
execute () – возвращает TRUE при успешном завершении или FALSE при сбое.
close () – возвращает TRUE при успешном завершении или FALSE при сбое.
если вы имеете в виду, что хотите узнать количество затронутых строк, вы можете использовать rowCount в инструкции pdo
$stmt->rowCount();
после выполнения;
если вы говорите об обработке ошибок, я думаю, что лучший вариант – установить errmode для разбрасывания исключений и обернуть все в блок try / catch
try { //---- } catch(PDOException $e) { echo $e->getMessage(); }
Другой путь:
if ($stmt->error){ echo "Error"; } else{ echo "Ok"; }