try...catch
はどんな意味があります。それがなければ、catch
には何もありません。
$results = mysql_query($query);
if (!mysql_num_rows($results)) {
echo 'No results!';
exit;
}
$ids = array();
while (($result = mysql_fetch_row($results)) !== false) {
$ids[] = $result['id'];
}
$ids = array_map('mysql_real_escape_string', $ids);
$query = "DELETE FROM table1 WHERE id IN ('" . join("','", $ids) . "')";
if (!mysql_query($query)) {
echo mysql_error();
exit;
}
$query = "DELETE FROM table2 WHERE id = '$id'";
if (!mysql_query($query)) {
echo mysql_error();
exit;
}
header("Location: list.php?m=4");
exit;
これはまだ多くのことを改善することができるが、それはすでにあなたのスパゲティロジックに比べて改善だ:私はリファクタリングとしてこれを始めると思います。あなたが適切な例外を使用することに真剣に興味を持っている場合は、最初に適切に(error, exit
部品のような)反復的な作業のための機能を使用するために移動する必要があり、その後、おそらくクラスとオブジェクトに全体を再構築し、最後に使用した例外は、今の間の通信にネストされたレイヤー。たぶん、PHPフレームワークを使用して全体の感触を得ることができます。
上記のコードに例外を置くことはgoto
よりほとんど多くのだろうが、ちょうど例示的な目的のために:
try {
$results = mysql_query($query);
if (!mysql_num_rows($results)) {
throw new Exception('No results!');
}
$ids = array();
while (($result = mysql_fetch_row($results)) !== false) {
$ids[] = $result['id'];
}
$ids = array_map('mysql_real_escape_string', $ids);
$query = "DELETE FROM table1 WHERE id IN ('" . join("','", $ids) . "')";
if (!mysql_query($query)) {
throw new Exception(mysql_error());
}
$query = "DELETE FROM table2 WHERE id = '$id'";
if (!mysql_query($query)) {
throw new Exception(mysql_error());
}
header("Location: list.php?m=4");
exit;
} catch (Exception $e) {
echo 'ERROR: ' . $e->getMessage();
exit;
}
http://www.w3schools.com/php/php_exception.asp – ArK
はあなたを持っていますまだ試みた?どの部分が分かりませんか?はい、エラー処理は例外の適切な使用法です。 – Matthew