У меня не было формального обучения в кодировании и надеялся, если кто-нибудь скажет мне, должен ли я быть осторожным с моим кодом?Резервный Overkill?
// Insert info to the db
if ($stmt = $db_connect->prepare("INSERT INTO db (col1, col2) VALUES (?, ?)")) {
if(!$stmt->execute([$val1, $val2])) {
exit("1:Faild to create deal");
}
// Get last id
$id = (int)$db_connect->lastInsertId();
$stmt->closeCursor();
} else { exit("0:Faild to create deal"); }
// Create the folder
if(!mkdir("folder/folder".$id)) {
if($stmt = $db_connect->prepare("DELETE FROM db WHERE id=?")) {
if(!$stmt->execute([$id])) {
exit("1:Faild to create the directory -> Faild to remove the row from the database");
}
exit("Faild to create the directory");
}
exit("0:Faild to create the directory -> Faild to remove the row from the database");
}
Повторяю заявление о создании папки еще раз с тем же макетом. Это просто повторяемый код, который выглядит излишним.
Примечание: У пакета, который у меня есть с моим хостом, есть только таблицы MyISAM, поэтому я не могу использовать Rollback.
Если что-то не удается, я хочу отменить все, что прошло.
Может кто-нибудь, пожалуйста, дайте мне руководство для лучших практик или я это делаю правильно?
ну, это поможет, если вы объясните в своем вопросе, что именно вы пытаетесь сделать. вы сначала вставляете строку в свой db - тогда вы проверяете, можете ли вы создать папку. и если вы не можете его создать, вы снова удалите ту же строку? почему бы вам не проверить, можете ли вы сначала создать папку, а если нет, вы даже не вставляете ничего в свой db? –
Извините, я думал, что сделал. Это не то, что я делаю, это больше то, как я делаю это, что мне нужна помощь. Ваше предложение работает в обоих направлениях. Если я могу создать каталог, но потом не могу обновить базу данных, мне все равно придется удалить каталог – ChristopherStrydom
. Мне следовало бы более четко понять, что если что-то не получается, я хочу отменить все, что прошло – ChristopherStrydom