Failed to establish server link

A very simple insert function, though. This gives some unpleasant errors ...

Like:

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 

And this is the code:

 <?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>"; } } ?> 

And don't worry about MySQL injection. Addition when we speak. Any thought of a mistake? And yes, I'm sure the data to connect to the database is correct.

UPDATE 1 This is my inc.php file included on top of the index.php file.

 <?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 This is my dbconnections.php file

 <?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); } } ?> 

UPDATE 3
The error I get when replacing the cuts suggested below

 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 
+6
source share
2 answers

According to our discussion in the comments on your question, try changing the situation so that inc.php is required in btw.php; btw.php is required in index.php instead of inc.php; and 'btw.php` is not required in inc.php. From reading php.net/manual/en/function.include.php, I think this might be area related.

EDIT:

First, the setting you created creates your own class of database objects ( DBConnection ), which is used to interact with the database and execute queries. When you used mysql_query yourself, it did not have a database connection identifier from which to query, since the DBConnection object abstracts this functionality in object methods. This is why you need to use if (!$_DB->insert($insert)) .

Secondly, and I'm not 100% on this, but, in fact, the problem is apparently related to the code in btw.php without "seeing" the database installation code. This could be due to two things. First, the $_DB variable was defined after the btw.php code, and as a result, when the PHP interpreter parsed btw.php , $_DB was not yet defined. The order if a definition and definition of a database object is required. Secondly, here I am a little unsure, but I think that there is a problem with variable scope / access when btw.php from inc.php (where $_DB ) is $_DB , and not for setting up the database in btw.php . In other words, you had code that uses the database object that is required in the script that defines it, and not the script database setup (including declaring the database object) required in the code that uses it.

I hope this makes sense, please let me know if this is still confusing. I usually have a problem explaining things briefly.

+5
source

It seems that you are not using your DBConnection class to query. Of course, this is in the class that the connection is made. By calling mysql_query () directly, PHP uses localhost, a web server account, and a password when trying to query. So you need to do something like

 if($_DB->insert($insert) > 0) { ... 
+1
source

Source: https://habr.com/ru/post/887781/


All Articles