【问题标题】:implement try catch in database class php在数据库类php中实现try catch
【发布时间】:2011-08-19 14:32:04
【问题描述】:

这是我在php中的类数据库

<?php
class DB
{

    private $SQLcommand;
    private $bd;

    public function setSQLcommand($valor)
    {
        $this->SQLcommand = $valor;
    }
    public function getSQLcommand()
    {
        return($this->SQLcommand);
    }

    function __construct()
    {
        $this->bd = new PDO("mysql:host=localhost;dbname=cpd", "root", "");

    }
    public function ExecSQL()
    {
        if ($this->SQLcommand != "")
            return($this->bd->exec($this->SQLcommand));
        else
            return(false);
    }   
    public function ExecSelect()
    {
        if ($this->SQLcommand != "")
        {
            $data = $this->bd->query($this->SQLcommand);
            return($data->fetchAll());


        }
        else
            return(false);
    }
    function __destruct()
    {
        $this->bd = null;
    }

}
?>

这是我实例化的方式

include_once 'db_class.php';

$e = new DB();
$e->setSQLcommand("INSERT INTO characteristic (id_charac,name_charac)
                VALUES ('','".$_POST["nomecharac"]."')");
$e->ExecSQL();


$p = new DB();
$p->setSQLcommand("select * from characteristic");                  
$data = $p->ExecSelect();

我会问我可以在代码中的哪里放置一个try catch,如果发生错误,try catch 会重定向到文件maintenance.php,并防止显示银行的用户名和密码...谢谢大家。 ..

【问题讨论】:

    标签: php class try-catch


    【解决方案1】:

    你可以把你的构造函数 __construct()

    try {
        $this->bd = new PDO("mysql:host=localhost;dbname=cpd", "root", "");
    } catch (PDOException $e) {
        die('Database connection could not be established.');
    }
    

    【讨论】:

      【解决方案2】:

      首先我会使用准备好的语句;有人可以将他们想要的东西放入 $_POST["nomecharac"] 中,这样他们就可以运行他们想要的命令。

      至于把try-catch放在哪里,如果你希望总是有一个到maintenance.php的重定向,把它放在类中。否则,将其放入实例化中。

      干杯!

      【讨论】:

      • 很好的答案,尤其是准备好的语句+1
      • 你能给我说明一下吗?如果你这样做了,我将非常感激
      【解决方案3】:

      您的数据库类不应该知道您的应用程序必须重定向到特定页面,只知道发生了异常。

      1. 让数据库类抛出异常。
      2. 在您的应用程序中捕获异常并采取行动。

      【讨论】:

      • 你能给我说明一下吗?如果你这样做了,我将非常感激
      猜你喜欢
      • 1970-01-01
      • 2012-08-25
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      相关资源
      最近更新 更多