1

私は問題があります。試していますが、正確な解決策が得られません。

データベースから何かを取得するコードがあります。

try {
    require_once('blogic.php');
    $obj  = new blogic();
    $re   = $obj->select("SELECT link FROM eff ORDER BY RAND() LIMIT 1");
    $l    = mysql_fetch_row($re);
    $link = $l[0];
} catch (Exception $e) {
    $link = "http://www.xyz.com/friendsin2013/";
}

上記のコードは正常に動作していますが、(何らかの理由で) データベースからデータを取得する際に問題が発生した場合は、catchブロックで指定されているようにリンクをデフォルトに設定したいと考えています。

しかし、それは私が望むようには機能していません。エラーがない場合は機能しますが、エラーが発生した場合は、$linkから渡されませんcatch。代わりにエラーメッセージが表示されます。

Blogic.php のような生活です --->> データベースのエントリを取得するためのファイルです。

<?php

include('s.php');

class blogic {

    function connect() {
        $link = mysql_connect(SERVER, USER, PASSWORD);
        if (!$link) {
            die('Could not connect: ' . mysql_error());
            return false;
        } else {
            return true;
        }
    }

    function select_database() {
        $db = mysql_select_db(DATABASE);
        if (!$db) {
            die('Could not connect: ' . mysql_error());
            return false;
        } else {
            return true;
        }
    }

    function select($str) {
        self::connect();
        self::select_database();

        $res = mysql_query($str);
        return $res;
    }
}
?>

s.php ->>

4

2 に答える 2

0

これを関数として書き、それを呼び出します。とブロック$linkの両方で戻ります。trycatch

require_once('blogic.php');

function getLink() {
     try {
        $obj = new blogic();
        $re=$obj->select("SELECT link FROM eff ORDER BY RAND() LIMIT 1");
        $l=mysql_fetch_row($re);
        return $l[0];
    }
    catch(Exception $e) {
        return "http://www.xyz.com/friendsin2013/";
    }
}

$link = getLink();
于 2012-08-28T18:02:39.237 に答える
0

/ロジック$linkの前に定義されていますか? そうでない場合は、最初に試してください。trycatch

$link提供されたコードではtry/の外ではアクセスできないようです。catch

マットは私を最高の答えに打ち負かしましたが。彼と一緒に行くことはまったく可能です。

于 2012-08-28T18:09:57.463 に答える