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

スクリーンネームに基づいてデータを取得しようとしていますが、データが利用できない場合は、catchblocksqlステートメントを実行したいと思います。

残念ながら、それは私のために働いていません。データベースに画面名=2のデータがありますが、そのデータを取得する代わりに、エージェントの新しいデータを取得しています

何か案が ?

4

3 に答える 3

4

ドキュメントから:

SELECT、SHOW、DESCRIBE、EXPLAIN、および結果セットを返すその他のステートメントの場合、mysql_query()は成功した場合はリソースを返し、エラーの場合はFALSEを返します。

したがって、mysql_queryは例外をスローしないため、catchブロックが呼び出されることはありません。

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 に答える