public function smart_query($query, $options = null, $bindoptions = null)
{
// Code to Reconnect incase of timeout
try {
$this->db->query('SELECT * FROM templates');
}
catch (PDOException $e)
{
echo $e;
$pdooptions = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
$this->db = new PDO("mysql:host=localhost;dbname=$this->database", "$this->username", "$this->password", $pdooptions);
}
$this->statement = $this->db->prepare($query);
if($bindoptions != null)
{
$this->bind($bindoptions);
}
$this->execute();
if($options != null)
{
// Return Single Row
if($options['rows'] == 1)
{
return $this->statement->fetch(PDO::FETCH_ASSOC);
}
// Return Multiple Rows
elseif($options['rows'] != 1)
{
return $this->statement->fetchAll(PDO::FETCH_ASSOC);
}
}
}
Я видел этот код сегодня и очень запутался. Похоже, он пытается обработать простой запрос, прежде чем делать фактический запрос.PHP PDO - проверка соединения перед выполнением запроса?
Почему он проверяет, что соединение все еще открыто?
Я думал, что PDO уничтожает это соединение при завершении выполнения скрипта автоматически? Правильно ли проверить, открыто ли оно или закрыто?
Было бы еще более эффективно просто запускать запрос, который предположительно будет запущен вместо фиктивного. – Vatev
Совершенно верно: o) – RandomSeed