0

这是我在 PHP 中的尝试捕获

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());
}

我正在尝试根据屏幕名称获取数据,如果它不可用,那么我想执行 catch 块 sql 语句。

不幸的是,它对我不起作用。我的数据库中有一个屏幕名称 = 2 的数据,但我没有获取该数据,而是获取代理的新数据

任何想法 ?

4

3 回答 3

4

文档中:

对于 SELECT、SHOW、DESCRIBE、EXPLAIN 和其他返回结果集的语句,mysql_query() 成功时返回资源,错误时返回 FALSE。

因此,您的 catch 块永远不会被调用,因为 mysql_query 不会引发异常。

使用if构造,或自己抛出异常

于 2012-10-02T12:35:12.940 回答
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());
}
于 2012-10-02T12:37:51.030 回答
0

;在 try 块中有查询

$query2 = 'SELECT * FROM callerdetail WHERE screenname="'.(string)((int)$screenname+ 1).'" AND status="0" AND agent = "'.$agent.'" LIMIT 0,1';

limit正确使用

于 2012-10-02T12:37:43.900 回答