J'essaie d'utiliser mysqli pour afficher des données, mais il n'affiche rien.mysqli resultset affiche null
Quel est le problème avec mon code?
classe php:
/* the database object */
private $_db;
public function __construct($db=NULL)
{
if(is_object($db))
{
$this->_db = $db;
}
else
{
$this->_db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
}
}
public function displayQuotes()
{
$sql = "SELECT cQuotes, vAuthor, cArabic, vReference
FROM thquotes
ORDER BY RAND()
LIMIT 1;";
$query = $this->_db->prepare($sql);
$query->execute();
$query->store_result();
/* bind variables to prepared statement */
$query->bind_result($cQuotes, $vAuthor, $cArabic, $vReference);
if(!$query->num_rows==0)
{
while($row = $query->fetch())
{
//echo $this->formatQuotes($row);
$formatHTML = new formatHTML();
echo $formatHTML->formatQuotes($row);
}
}
else
{
echo "There are no Quotes!";
}
$query->free_result();
$query->close();
}
ne lit la déclaration des if(!$query->num_rows==0)
et des données est là dans le resultset car il ne va pas à la partie d'autre, mais je ne peux pas comprendre pourquoi il n'affiche rien .
fichier php:
include "base.php";
include_once "inc/class.quotes-m.inc.php";
$quotes = new Quotes($db);
$quotes->displayQuotes();
php base.php:
include_once("inc/constants.inc.php");
error_reporting(E_ALL);
ini_set("display_errors", 1);
$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if (!$db) {
echo 'db link fail';
}
$ this -> _ db est l'objet de base de données. J'ai enlevé 'try/catch' mais il affiche maintenant 'no Quotes'. – input
"$ this -> _ db est l'objet de base de données" quel type d '"objet de base de données"? Une instance (directe) de mysqli? "J'ai supprimé try/catch" - et ajouté une autre gestion d'erreur à la place? – VolkerK
J'ai mis à jour mon code, s'il vous plaît vérifier. le fichier php inclut le fichier de base qui se connecte à la base de données. il crée ensuite une instance de la classe et appelle la fonction requise pour afficher les données. Je crois que le problème réside dans cette ligne '$ query = $ this -> _ db-> prepare ($ sql);' – input