この場合、失敗をキャッチするためにクエリを変更する必要があります.100%ではありませんが、このようなことがうまくいくかもしれません.ただし、OO スタイルで mysqli または pdo に移行すると、エラーをより適切にトラップして処理できます。
$type_ID =$_GET["typeID"];
try{
$article_ID =$_GET["articleID"];
$select_query = mysql_query("SELECT articleContent, articleTitle From articles WHERE articleID=$article_ID && typeID=$type_ID") or throw new Exception("ERROR HERE");
}
catch(Exception $e)
{
$select_query = mysql_query("SELECT articleContent, articleTitle From articles WHERE typeID=$type_ID"); // note we can't throw exception here because its already in the try catch. perhaps we should look at something like the finally statement.
//echo $e->getMessage(); //uncomment this line if you want to output the exception error text set above
}
$row = mysql_fetch_assoc($select_query);
echo '<h1>'.$row['articleTitle'].'</h1>';
echo $row['articleContent'];
実際には、このようなことをして、事前に入力を検証する方がはるかに良いと思っていました。(ここでは文字列エスケープを行っていないことに注意してください。忘れないでください)
$type_ID =$_GET["typeID"];
$article_ID =$_GET["articleID"];
if (strlen($type_ID)>0 && strlen($article_ID)>0 && is_numeric($type_ID) && is_numeric($article_ID)) {
$sqlquery = "SELECT articleContent, articleTitle From articles WHERE articleID=$article_ID && typeID=$type_ID";
} else {
$sqlquery = "SELECT articleContent, articleTitle From articles WHERE typeID=$type_ID";
}
try {
$queryresult = mysql_query($sqlquery) or throw new Exception("Query Failed");
} catch(Exception $e) {
echo $e->getMessage();
}
したがって、基本的には、入力を検証してチェックし、SQL ステートメントを切り替える前に、try catch ロジックは、クエリが成功したか失敗したかを純粋に示しています。これは、試行していたものよりもはるかに賢明です。