和大家分享一下:::
首先,
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语句”