Не удалось установить ссылку на сервер

Очень простая функция вставки, и все же. Это дает некоторые неприятные ошибки …

Подобно:

Warning: mysql_query(): Access denied for user '***.'@'***.one.com' (using password: NO) in /customers/***.be/***.be/httpd.www/belastingen/classes/btw.php on line 24 Warning: mysql_query(): A link to the server could not be established in /customers/***.be/***.be/httpd.www/belastingen/classes/btw.php on line 24 

И это код:

 <?php if(isset($_POST['submit'])){ $naam = $_POST['name']; $email = $_POST['email']; $kind1 = $_POST['kind1']; $kind2 = $_POST['kind2']; $kind3 = $_POST['kind3']; $kind4 = $_POST['kind4']; $kind5 = $_POST['kind5']; $captcha = $_POST['captcha']; if ($captcha == 2){ if (!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['kind1'])) { $insert = "INSERT INTO belastingen (ouder, email, kind1, kind2, kind3, kind4, kind5) VALUES ( '".$naam."', '".$email."', '".$kind1."', '".$kind2."', '".$kind3."', '".$kind4."', '".$kind5."')"; if (!mysql_query($insert)) { echo "<div class=\"feedback\">query invoeren faalt</div>"; } else { echo "<div class=\"feedback\">Uw registratie werd goed geregistreerd</div>"; } } else { echo "<div class=\"feedback\">falen, niveau 2</div>"; } } else { echo "<div class=\"feedback\">captcha probleem</div>"; } } ?> по <?php if(isset($_POST['submit'])){ $naam = $_POST['name']; $email = $_POST['email']; $kind1 = $_POST['kind1']; $kind2 = $_POST['kind2']; $kind3 = $_POST['kind3']; $kind4 = $_POST['kind4']; $kind5 = $_POST['kind5']; $captcha = $_POST['captcha']; if ($captcha == 2){ if (!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['kind1'])) { $insert = "INSERT INTO belastingen (ouder, email, kind1, kind2, kind3, kind4, kind5) VALUES ( '".$naam."', '".$email."', '".$kind1."', '".$kind2."', '".$kind3."', '".$kind4."', '".$kind5."')"; if (!mysql_query($insert)) { echo "<div class=\"feedback\">query invoeren faalt</div>"; } else { echo "<div class=\"feedback\">Uw registratie werd goed geregistreerd</div>"; } } else { echo "<div class=\"feedback\">falen, niveau 2</div>"; } } else { echo "<div class=\"feedback\">captcha probleem</div>"; } } ?> 

И не беспокойтесь о MySQL-инъекции. Добавление, когда мы говорим. Любая мысль об ошибке? И да, я уверен, что данные для подключения к базе данных верны.

UPDATE 1 Это мой inc.php , включенный поверх файла index.php.

 <?php define('MYSQL_HOST', '***.be.mysql'); define('MYSQL_DB', '***'); define('MYSQL_USER', '***'); define('MYSQL_PASSW', '***'); require_once 'classes/dbconnections.php'; require_once 'classes/btw.php'; $_DB = new DBConnection(MYSQL_HOST, MYSQL_DB, MYSQL_USER, MYSQL_PASSW); ?> 

UPDATE 2 Это мой dbconnections.php

 <?php class DBConnection { public $host; public $db; public $user; public $password; private $_connection; public function __construct($host = null, $db = null, $user = null, $password = null) { $this->host = $host; $this->db = $db; $this->user = $user; $this->password = $password; $this->connect(); } private function connect(){ $this->_connection = mysql_connect($this->host, $this->user, $this->password); if(!$this->_connection) { die("An error occured---- while connecting to the database: ".mysql_errno()." - ".mysql_error()); } else{ $selected = mysql_select_db($this->db, $this->_connection); if(!$selected) { die("An error occured while connecting to the database: ".mysql_errno()." - ".mysql_error()); } } } public function listing($sql) { $result = mysql_query($sql, $this->_connection); while($row=mysql_fetch_array($result)) { $return[] = $row; } return $return; } public function select($sql) { $result = mysql_query($sql, $this->_connection); return mysql_fetch_array($result); } public function insert($sql) { mysql_query($sql, $this->_connection); return mysql_affected_rows($this->_connection); } public function delete($sql) { mysql_query($sql, $this->_connection); return mysql_affected_rows($this->_connection); } public function escape($value) { return mysql_real_escape_string($value); } } ?> 

ОБНОВЛЕНИЕ 3
Ошибка, которую я получаю при замене предложенных ниже разбавлений

 Notice: Undefined variable: _DB in /customers/***/***/httpd.www/belastingen/classes/btw.php on line 13 Fatal error: Call to a member function insert() on a non-object in /customers/***/***/httpd.www/belastingen/classes/btw.php on line 13 

Solutions Collecting From Web of "Не удалось установить ссылку на сервер"

Согласно нашей дискуссии в комментариях к вашему вопросу, попробуйте изменить ситуацию, чтобы inc.php требовался в btw.php; btw.php требуется в index.php вместо inc.php; и 'btw.php` не требуется в inc.php. От чтения php.net/manual/en/function.include.php, я думаю, что это может иметь отношение к сфере.

РЕДАКТИРОВАТЬ:

Во-первых, DBConnection вами настройка создает пользовательский класс объектов базы данных ( DBConnection ), который используется для взаимодействия с базой данных и выполнения запросов. Когда вы использовали mysql_query сам по себе, у него не было идентификатора подключения к базе данных, из которого можно выполнить запрос, поскольку объект DBConnection абстрагирует эту функциональность в методах объектов. Вот почему вам нужно было использовать if (!$_DB->insert($insert)) .

Во-вторых, и я не 100% на этом, но, по сути, основная проблема связана с кодом в btw.php не видит «код настройки базы данных». Это могло быть из-за двух вещей. Во-первых, переменная $_DB была определена после того, как btw.php код btw.php , и в результате, когда интерпретатор PHP проанализировал btw.php , $_DB еще не был определен. Порядок, если требуется определение и определение объекта базы данных. Во-вторых, и это то, где я немного не уверен, но я думаю, что существует проблема с переменной областью / доступом, когда требуется btw.php изнутри inc.php (где $_DB определено) вместо того, чтобы требовать настройки базы данных в btw.php , Другими словами, у вас был код, который использует объект базы данных, который требуется в скрипте, который его определяет, а не сценарий настройки базы данных (включая объявление объекта базы данных), который требуется в коде, который его использует.

Надеюсь, это имеет смысл, пожалуйста, дайте мне знать, если это все еще запутывает. Я имею тенденцию иметь проблему, объясняющую вещи кратко.

Кажется, что вы не используете свой класс DBConnection для запроса. Конечно, именно в этом классе соединение выполняется. Вызывая mysql_query () напрямую, PHP использует localhost, учетную запись веб-сервера и пароль при попытке запроса. Поэтому вам нужно сделать что-то вроде

 if($_DB->insert($insert) > 0) { ...