Se connecter à des bases de données MySQL à l'aide de PHP programmation orientée objet concept
Je suis en train d'écrire une classe et une poignée de fonctions pour se connecter à la base de données et de récupérer les informations à partir des tables. Je suis allé dans les posts précédents ayant les mêmes titres, mais la plupart d'entre eux ont été écrites en utilisant les fonctions de mysql et je suis à l'aide de fonctions mysqli.
Je veux quelqu'un qui peut passer à travers ce simple script et laissez-moi savoir où je fais mon erreur.
C'est mon class.connect.php
:
<?php
class mySQL{
var $host;
var $username;
var $password;
var $database;
public $dbc;
public function connect($set_host, $set_username, $set_password, $set_database)
{
$this->host = $set_host;
$this->username = $set_username;
$this->password = $set_password;
$this->database = $set_database;
$this->dbc = mysqli_connect($this->host, $this->username, $this->password, $this->database) or die('Error connecting to DB');
}
public function query($sql)
{
return mysqli_query($this->dbc, $sql) or die('Error querying the Database');
}
public function fetch($sql)
{
$array = mysqli_fetch_array($this->query($sql));
return $array;
}
public function close()
{
return mysqli_close($this->dbc);
}
}
?>
C'est mon index.php
:
<?php
require_once ("class.connect.php");
$connection = new mySQL();
$connection->connect('localhost', 'myDB', 'joker', 'names_list');
$myquery = "SELECT * FROM list";
$query = $connection->query($myquery);
while($array = $connection->fetch($query))
{
echo $array['first_name'] . '<br />';
echo $array['last_name'] . '<br />';
}
$connection->close();
?>
Je reçois le message d'erreur indiquant que Error querying the Database
.
Je vous recommande d'utiliser
PDO
, au lieu de mysqlI_*
fonctions.OriginalL'auteur 125369 | 2011-12-12
Vous devez vous connecter pour publier un commentaire.
Le problème est que ce soit:
ou ceci:
Parce que vous êtes en utilisant le résultat de la requête pour interroger de nouveau. Fondamentalement, vous êtes en train de faire:
Et vous obtenez une erreur, parce que $r n'est pas une chaîne de requête. Quand elle est convertie en une chaîne de caractères, c'est un "1" (à partir de votre autre commentaire).
Essayez de changer la fonction de (a changé de nom de variable, de sorte que vous pouvez voir la différence):
ou il suffit d'appeler la fonction directement.
OriginalL'auteur craniumonempty
Quelques problèmes :-
vous ne mourez pas sans fournir un bon d'erreur mysql (et c'est une bonne pratique pour se terminer normalement)
méthode de récupération est uniquement RÉCUPÉRER la première ligne
mysqli ont OO méthode, pourquoi vous avez encore de procédure à l'aide de la fonction?
OriginalL'auteur ajreal
Si vous ne faites pas votre propre db abstraction pour l'apprentissage de php et de mysql, vous pouvez utiliser Medoo (http://medoo.in/).
Il est gratuit et minuscules db-cadre, qui pourrait sauver un énorme travail et de temps.
OriginalL'auteur Andre
Bien évidemment, une erreur se produit sur
SELECT * FROM list
vous pouvez utilisermysqli_error
pour trouver l'erreur:Cela permet d'afficher le message d'erreur exact et vous aidera à résoudre votre problème.
Pouvez-vous modifier:
or die('Error:'.mysqli_error($this->dbc).', query: '.$sql);
et nous dire dans la requête qu'il ne parvient pas?Salut Wesley van Opdorp, j'ai suivi vos conseils et c'est ce que j'obtiens comme message d'erreur "Erreur:Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de '1' à la ligne 1, à la requête: 1"
OriginalL'auteur Wesley van Opdorp
Essayer de vérifier cette
https://pramodjn2.wordpress.com/
OriginalL'auteur Pramod Jain
La mysqli_fetch_array fonction de votre méthode de récupération nécessite deux paramètres qui sont le SQL résultat et le type de tableau que vous avez l'intention de revenir. Dans mon cas, j'utilise MYSQLI_ASSOC.
C'est qu'il doit apparaître comme ceci:
public function fetch($sql)
{
$array = mysqli_fetch_array($this->query($sql), MYSQLI_ASSOC);
return $array;
}
OriginalL'auteur Affo
OriginalL'auteur Gaurang P