Доброго времени суток, возникла проблема, бьюсь несколько часов, не могу понять в чем причина. В общем, делаю бота для ВКонктакте на PHP, игрового, по этому и требуется БД. Для работы с БД использую PDO. Суть проблемы: при обращении ВК к моему обработчику, высвечивается вот такое сообщение: 26.08.2019 15:56:24 Error: HTTP response code said error. Attempt 4/5 Как я понял, ошибка где-то именно в работе с базой, потому что без нее все работает нормально, прошу помочь мне найти ошибку в коде. Main.php - обработчик на который ссылается ВК Код (Text): <?php ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); $body = file_get_contents('php://input'); $arr = json_decode($body, true); if ($arr['type'] == 'confirmation') { exit("Тут все работает нормально"); } if ($arr['type'] == 'message_new') { include_once 'scripts/vk.class.php'; include_once 'scripts/db.class.php'; $obj = $arr['object']; $db = new MyDB; $vk = new vk('Тут тоже все вроде работает'); $mess_id = $obj['id']; $mess_date = $obj['date']; $mess_peer_id = $obj['peer_id']; $mess_from_id = $obj['from_id']; $mess_text = $obj['text']; $mess_random_id = $obj['random_id']; $mess_ref = $obj['ref']; $mess_ref_source = $obj['ref_source']; $mess_important = $obj['important']; $mess_geo = $obj['geo']; $mess_reply_message = $obj['reply_message']; $mess_action = $obj['action']; $mess_action_type = $mess_action['type']; // А вот тут скрипт прерывается $user = $db->getUser($mess_from_id); // Дальше не идет if(!$user) { file_put_contents("log2.txt", "Проверка пройдена последний раз - ".time()); //$user_vk = $vk->getUser($userid); //$domain = $user_vk[0]['domain']//"DOMAIN NAXUY"; $db->regUser($mess_from_id); } $text_lower = mb_strtolower($mess_text, 'UTF-8'); switch ($text_lower) { case 'информация' case 'помощь': //$command->command_help($mess_from_id, $peer_id); $vk->send($mess_peer_id, "саси", $mess_from_id); break; default: break; } file_put_contents("log3.txt", "Проверка пройдена последний раз - ".time()); } exit("ok"); db.class.php Код (Text): <?php class MyDB { private $db; private $vk; public function __construct() { include_once "vk.class.php"; try { $this->db = new PDO("mysql:host=localhost;dbname=Тут имя бд", "Тут пользователь", "Мой пароль"); //$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->db->exec("set names utf8"); $this->vk = new vk('Тут работает вроде'); } catch(PDOException $e) { echo $e->getMessage(); } } public function getUser($userid) { return $this->db->query("SELECT * FROM `accounts` WHERE `id` = '$userid'")->fetch(PDO::FETCH_ASSOC); } public function regUser($userid) { $user = $this->vk->getUser($userid); $domain = $user[0]['domain']; $nick = $user[0]['first_name']; $sql = "INSERT INTO `accounts` (`id`, `domain`, `nickname`, `money`, `bank`, `bitcoins`, `bronzes`, `irons`, `diamonds`, `rubs`) VALUES ('$userid', '$domain', '$nick', '0', '0', '0', '0', '0', '0', '0');"; $this->db->query($sql); return true; } } ?> Заранее спасибо..
Лучше сохраняй куда-нибудь в логи, и потом посмотри, чего пишет. Вообще, сервера обычно настроены логи ошибок вести. Почитай, посмотри, что там происходит, когда контакт стучиться. Так вставлять переменные нельзя в запрос, надо подготавливать. Тем более ты PDO юзаешь