这是我在PHP中的try catch
try{
print (string)((int)$screenname+ 1);
$query2 = 'SELECT * FROM callerdetail WHERE screenname="'.(string)((int)$screenname+ 1).'" AND status="0" AND agent = "'.$agent.'" LIMIT 1;';
$result = mysql_query($query2) or die (mysql_error());
}
catch(Exception $e){
$query3 = 'SELECT * FROM callerdetail WHERE status="0" AND agent = "'.$agent.'" LIMIT 1';
$result = mysql_query($query3) or die (mysql_error());
}
我正在尝试根据screenname获取数据,如果它不可用,那么我想执行catch块sql语句。
不幸的是,这对我不起作用。我的数据库中有一个数据,屏幕名称= 2,但我没有获取该数据,而是获取代理的新数据
任何想法?
答案 0 :(得分:4)
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句返回 resultset,mysql_query()在成功时返回资源,或者返回FALSE 错误。
因此,永远不会调用您的catch块,因为mysql_query不会抛出异常。
使用if
构造,或者自己抛出 异常。
答案 1 :(得分:1)
为什么会抛出'异常?'没有任何事情导致“例外”。
if语句会不会更好?
$query2 = 'SELECT * FROM callerdetail WHERE screenname="'.(string)((int)$screenname+ 1).'" AND status="0" AND agent = "'.$agent.'" LIMIT 1;';
$result = mysql_query($query2) or die (mysql_error());
if(mysql_num_rows($result) > 0 ){ // Got a result
// Do something
) else {
// Execute other query
$query3 = 'SELECT * FROM callerdetail WHERE status="0" AND agent = "'.$agent.'" LIMIT 1';
$result = mysql_query($query3) or die (mysql_error());
}
答案 2 :(得分:0)
您在try block
中的查询中有;
$query2 = 'SELECT * FROM callerdetail WHERE screenname="'.(string)((int)$screenname+ 1).'" AND status="0" AND agent = "'.$agent.'" LIMIT 0,1';
并正确使用limit