2016-02-18 2 views
0

файл config.phpPHP Mysqli Упс связи концепция

<?php 
Class Config 
{ 
    private $_host; 
    private $_user; 
    private $_password; 
    private $_db; 

    public function __constructor() 
    { 
     $this->_host = 'localhost'; 
     $this->_user = 'root'; 
     $this->_password = ''; 
     $this->_db = 'test'; 
    } 

    public function connectDB() 
    { 
     $connect = new mysqli($this->_host, $this->_user, $this->_password, $this->_db); 
     if (!$connect) { 
      die('Connection Error : ' . $connect->mysql_error()); 
     } else { 
      echo 'Connection Success'; 
     } 
     return $connect; 
    } 
} 
?> 

файл index.php

<?php 
include 'config.php'; 
$conn = new Config(); 
$conn = $conn->connectDB(); 
$sql = "SELECT name, matric_no FROM users"; 
$result = mysqli_query($conn, $sql); 
if (mysqli_num_rows($result) > 0) { 
    while ($row = mysqli_fetch_assoc($result)) { 
     echo 'Name : ' . $row['name'] . ' - Matric No : ' . $row['matric_no'] . '<br>'; 
    } 
} ?> 

показывает ошибку:

Connection Success
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in D:\xampp\htdocs\test\index.php on line 10

Любое решение?

+0

попробуйте вставить свой код более чем в одну строку. никто не может это прочитать. –

+0

Вы создаете класс для обертывания класса и не добавляете значения. Пожалуйста, не делайте этого. Вместо этого используйте PDO или напрямую используйте mysqli. – Tordek

ответ

0

Вам не нужно использовать mysqli_num_rows.

mysqli_query Returns FALSE on failure

$result = mysqli_query($conn, $sql); 
// $result will give you true or false 
if ($result) { 
    while ($row = mysqli_fetch_assoc($result)) { 
     echo 'Name : ' . $row['name'] . ' - Matric No : ' . $row['matric_no'] . '<br>'; 
    } 
} 
else{ 
    // check error 
    printf("Error: %s\n", mysqli_error($conn)); 
} 

Надеется, что это поможет :)

+0

@downvoter: Не могли бы вы рассказать мне, что не так в ответ? –

0

Возвращаемых значений mysqli_query:

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.

Скорее всего, у вас есть ошибки в запросе и mysqli_query возвращает FALSE.

Проверьте сообщение об ошибке mysqli_error($conn).

2

Конструктор должен гласить:

  • public function __construct()
  • и не public function __constructor()

согласно инструкции: http://php.net/manual/en/language.oop5.decon.php на Конструкторы и деструкторы

<?php 
Class Config 
{ 
    private $_host; 
    private $_user; 
    private $_password; 
    private $_db; 

    public function __construct() 
    { 
     $this->_host = 'localhost'; 
     $this->_user = 'root'; 
     $this->_password = ''; 
     $this->_db = 'test'; 
    } 

    public function connectDB() 
    { 
     $connect = new mysqli($this->_host, $this->_user, $this->_password, $this->_db); 
     if (!$connect) { 
      return 'Connection Error : ' . $connect->mysql_error(); 
     } else { 
      return $connect; 
     } 

    } 
} 
?> 

И в Индексе .php проверьте, подключено ли соединение был успешным по var_dump/print_r

<?php 
include 'config.php'; 
$conn = new Config(); 
$conn = $conn->connectDB(); 
print_r($conn); break; //Remove this line if db connxn is succesfull 

$sql = "SELECT name, matric_no FROM users"; 
$result = mysqli_query($conn, $sql); 
if (mysqli_num_rows($result) > 0) { 
    while ($row = mysqli_fetch_assoc($result)) { 
     echo 'Name : ' . $row['name'] . ' - Matric No : ' . $row['matric_no'] . '<br>'; 
    } 
} ?> 

Держите поток выполнения в уме и отладки точки на точку, чтобы найти, где это происходит не так.

Смежные вопросы