У меня есть собственный класс PHP, который я создаю с нуля, он предназначен для подключения, запуска подготовленного запроса, вывода и отключения от базы данных.Проблемы с моим классом PHP
Проблема в том, что мне пришлось бороться с несколькими ошибками.
Это последнее, после того как остальные были исправлены.
Warning: PDO::__construct(): MySQL server has gone away in E:\UniServerZ\www\simple db\index.php on line 23 Warning: PDO::__construct(): Error while reading greeting packet. PID=8404 in E:\UniServerZ\www\simple db\index.php on line 23 Warning: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2006] MySQL server has gone away' in E:\UniServerZ\www\simple db\index.php:23 Stack trace: #0 E:\UniServerZ\www\simple db\index.php(23): PDO->__construct('mysql:host=loca...', 'root', 'password') #1 E:\UniServerZ\www\simple db\index.php(53): simpleDB->connectToDB() #2 {main} thrown in E:\UniServerZ\www\simple db\index.php on line 23 Fatal error: Maximum execution time of 30 seconds exceeded in E:\UniServerZ\www\simple db\index.php on line 23
я не могу понять это, хотя, мои регистрационные данные, реквизиты хоста, и т.д., и т.д., все правильно, поэтому я не уверен, что теперь делать, я прочитал несколько статей в Интернете, но они не очень помогают , И вот я здесь.
Вот мой класс и подключение код:
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
class fooBarBaz {
protected $conn;
private $host;
private $username;
private $password;
private $db;
private $driver;
public function __construct($driver, $host, $db, $user, $pass) {
$this->driver = $driver;
$this->host = $host;
$this->db = $db;
$this->username = $user;
$this->password = $pass;
}
public function connecterino() {
try {
$this->conn = new PDO($this->driver . ':host=' . $this->host .';dbname=' . $this->db . ';charset=utf8', $this->username, $this->password);
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
}
public function queryForStuff($preparedQuery, $params) {
try {
$stmt = $this->conn->prepare($preparedQuery);
$exec = $stmt->execute($params);
return $stmt;
} catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
}
public function getResultOfThatStuff($sql) {
$data = $sql->fetchAll(PDO::FETCH_ASSOC);
foreach($data as $row){
print_r($row);
}
}
public function disconnectDB() {
$this->conn = null;
}
}
try {
$db = new fooBarBaz("mysql", "localhost:8000", "myDatabase", "root", "root");
$db->connecterino();
$query = $db->queryForStuff("select id from songs where id != :1", [":1" => "2"]);
$db->getResultOfThatStuff($query);
} catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
?>
Как я могу получить этот код работает в полной мере, как ожидалось?
Что я сделал неправильно/я слепой?
Спасибо.
Общие вопросы, которые вы должны добавить к вопросу следующего вида: a) Операционная система, похоже, является версией Windows .... и 32/64bit? b) Можете ли вы подключиться с другим интерфейсом к этому серверу MySQL (например, [HeidiSQL] (http://www.heidisql.com/download.php) или [средство командной строки] (http://dev.mysql.com /doc/refman/5.7/en/mysql.html))? c) Какие версии MySQL/PHP вы используете? d) Можете ли вы подключиться к серверу MySQL при использовании простого кода, например ' php $ pdo = new PDO ('mysql: host = localhost; dbname = test; charset = utf8', 'localonly', 'localonly'); ?> '? – VolkerK
Конкретно на ваш вопрос: 'localhost: 8000' <- sure? Неужели, правда, верно? ;-) – VolkerK
@VolkerK ничего себе, пожалуйста, не ненавидите меня, это 4am afterall xD! Теперь он возвращает данные. – SkullDev