问答详情
源自:5-3 [PDO] 数据库操作类之执行SQL语句

和大家分享一下:::

首先,

public static function getAll($sql=null){

if($sql!=null){

self::query($sql);

}

$result=self::$PDOStatement->fetchAll(constant("PDO::FETCH_ASSOC"));

return($result);

}

因为在query()中已经做了容错处理,那么这里没必要做判断,说$sql是否为空,就应该直接执行。

其次,

public static function haveErrorThrowException(){

//首先要得到PDOStatement对象

$obj=empty(self::$PDOStatement)?self::$link: self::$PDOStatement;

$arrError=$obj->errorInfo();

//print_r($arrError);

if(self::$queryStr==""){

//如果要执行的SQL语句为空

self::throw_exception("没有要执行的SQL语句!");

return false;

}

if($arrError[0]!="000000"){

//正确的时候,数组$arrError的第一项的键值是“00000”

self::$error="SQL LSTATE: ".$arrError[0]."<br />SQL ERROR: ".$arrError[2]."<br />ERROR SQL: ".self::$queryStr;

//如果产生了错误,我们就要抛出异常

self::throw_exception(self::$error);

return false;

}

}

在haveErrorThrowException()这个方法中,应先判断是否为空,再判断是否错误信息的第一位键值是否为“00000”。否则会出现,当$sql为空时,提示不到“没有可以执行的SQL语句”

提问者:qq_枫_ 2017-02-22 13:57

个回答

  • 慕盖茨1461535
    2020-06-24 15:57:50

    ???999


  • 慕九州8116122
    2017-07-24 09:46:39

    666