在这种情况下,您必须更改查询以使用或捕获失败,尽管我不是 100%,但这样的事情可能会起作用(有人可以纠正我吗?)您最好远离 mysql_ 功能虽然并以 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 逻辑纯粹是为了查询是成功还是失败,这比你尝试的要明智得多。