Ответ 1
Метод execute()
возвращает boolean
... так просто:
if ($stmt->execute()) {
// it worked
} else {
// it didn't
}
С помощью следующего фрагмента кода, как я знаю, что что-то было добавлено в 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
в случае ошибки.
На практике, однако, это становится раздражающим и подверженным ошибкам. Лучше настроить mysqli для выдачи исключений при ошибке и избавления от всей конкретной обработки ошибок, за исключением тех немногих случаев, когда ожидается ошибка (например, предварительная вставка, которая может нарушать уникальное ограничение):
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
если вы хотите знать количество затронутых строк, вы можете использовать rowCount в инструкции pdo
$stmt->rowCount();
после выполнения;
если вы говорите об обработке ошибок, я думаю, что лучший вариант - установить errmode для исключения исключений и обернуть все в блок try/catch
try
{
//----
}
catch(PDOException $e)
{
echo $e->getMessage();
}
Другой способ:
if ($stmt->error){
echo "Error";
}
else{
echo "Ok";
}
if($stmt->execute()){
//TRUE
}
else{
//FALSE
}