Перехват ошибок pdo - MySQL
Формулировка задачи:
добрый день использую вот этот класс от этого класса у меня работает парсер vk, информации проходит много около 100 запросов в минуту и иногда вылетает ошибка You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 скажите как можно помимо этой ошибки вывести на экран какую нибудь переменную которая на мой взгляд поможет определить ошибку например $query спасибо
class sql{ private static $instance; private $db; public static function app() { if (self::$instance == null) { self::$instance = new self(); } return self::$instance; } private function __construct() { setlocale(LC_ALL, 'ru_RU.UTF8'); $this->db = new \PDO('mysql:host=' . MYSQL_SERVER . ';dbname=' . MYSQL_DB, MYSQL_USER, MYSQL_PASSWORD); $this->db->exec('SET NAMES UTF8'); $this->db->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC); } public function select($query, $params = array()) { //echo $query."<br>"; $q = $this->db->prepare($query); $q->execute($params); if ($q->errorCode() != \PDO::ERR_NONE) { $info = $q->errorInfo(); die($info[2]); } return $q->fetchAll(); } public function getByHash($table, $hash_key, $hash_value, $real_key, $real_value){ $q = $this->db->prepare("SELECT * FROM $table WHERE $hash_key=:$hash_key"); $q->execute(array($hash_key => $hash_value)); if ($q->errorCode() != \PDO::ERR_NONE) { $info = $q->errorInfo(); die($info[2]); } while($row = $q->fetch()){ if($row[$real_key] == $real_value) return $row; } return null; } public function insert($table, $object, $last=null) { $columns = array(); foreach ($object as $key => $value) { $columns[] = $key; $masks[] = $value; if ($value === null) { $object[$key] = 'NULL'; } } $columns_s = implode(',', $columns); $masks_s = "'".implode('\',\'', $masks)."'"; $query = "INSERT INTO $table ($columns_s) VALUES ($masks_s)"; $q = $this->db->prepare($query); $q->execute($object); if ($q->errorCode() != \PDO::ERR_NONE) { $info = $q->errorInfo(); die($info[2]); } if($last == true ) { return $this->lastInsertId(); } else{ return null ; } } public function lastInsertId(){ $resalt = $this->select("SELECT LAST_INSERT_ID()"); if(isset($resalt[0]['LAST_INSERT_ID()'])){ $resalt = $resalt[0]['LAST_INSERT_ID()']; } return $resalt; } public function insertMany($table, $object,$last = null,$count=null) { $columns = array(); $masks2 = array(); $i=1; foreach ($object as $value) { $masks = array(); foreach ($value as $key=>$val) { $masks[] = $val; if($i==1) { $columns[] = $key; } if ($value === null) { $object[$key] = 'NULL'; } } $masks = implode("','", $masks); $masks2[]= "('".$masks."')"; $i++; } $columns_s = implode('`,`', $columns); $masks_s = implode(',', $masks2); //echo $masks_s; $query = "INSERT INTO `$table` (`$columns_s`) VALUES $masks_s"; $this->select($query); //$q = $this->db->prepare($query); //$q->execute($object); //if ($q->errorCode() != \PDO::ERR_NONE) { // $info = $q->errorInfo(); // die($info[2]); // } return $this->lastOrCount($last,$count,$i-1); } public function lastOrCount ($last=null,$count=null,$i=null){ if ($count == true and $last == true ){ return $array = array($this->lastInsertId(),$i); } else if($last == true){ return $this->lastInsertId(); } if($count == true ) { return $i; } else{ return null ; } } public function update($table, $object, $where, $params = array()) { $sets = array(); foreach ($object as $key => $value) { $sets[] = "$key=:$key"; if ($value === NULL) { $object[$key] = 'NULL'; } } $sets_s = implode(',', $sets); $query = "UPDATE $table SET $sets_s WHERE $where"; ///echo $query;exit(); $q = $this->db->prepare($query); $q->execute(array_merge($object, $params)); if ($q->errorCode() != \PDO::ERR_NONE) { $info = $q->errorInfo(); die($info[2]); } return $q->rowCount(); } public function delete($table, $where, $params = array()) { $query = "DELETE FROM $table WHERE $where"; $q = $this->db->prepare($query); $q->execute($params); if ($q->errorCode() != \PDO::ERR_NONE) { $info = $q->errorInfo(); die($info[2]); } return $q->rowCount(); } }
Решение задачи: «Перехват ошибок pdo»
textual
Листинг программы
try...catch
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д