如何从数据库获取数据时捕获错误或警告

时间:2012-08-28 17:57:59

标签: php mysql phpmyadmin

我有问题。我正在努力,但我没有得到确切的解决方案。

我有从数据库中获取内容的代码。

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 - &gt;&gt;

2 个答案:

答案 0 :(得分:0)

将其写为函数,然后调用它;在$linktry块中返回catch

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

答案 1 :(得分:0)

$link / try逻辑之前是否定义了catch?如果不是先尝试。

使用提供的代码,

$link似乎无法在try / catch之外访问。

虽然马特打败了我最好的答案;尽可能地和他一起去。