@StanislavValiev

Запрос к mysql в php, почему выводит ошибку при использовании класса?

Ничего не работает и выводится предупреждение Warning: mysql_num_rows() expects parameter 1 to be resource, string given in L:\OpenServer\domains\CMS-lite\engine\templates\default\index.php on line 71

Когда пытаюсь вытащить данные через класс:
//сам класс
class DataBase{

  const BD_HOST = "localhost";
  const BD_USER = "stas";
  const DB_PASS = "stas";
  const DB = 'CMS-Lite';

  public function __construct(){
    @mysql_connect(DB_HOST,DB_USER,DB_PASS);
    @mysql_select_db(DB);
    }

    public function getDb(){

     }
    public function query($query){
            return $query;
    }
 }

//использование класса
 $mysqli = new DataBase;
 $query = $mysqli->query('SELECT * FROM news');
 while ( $row = mysql_fetch_array($query) ) {
        foreach ($row as $col_value) {
         print "$col_value";
           }
         }

Если написать без класса, а просто инструкции, то все проходит нормально:
@mysql_connect('localhost','stas','stas');
@mysql_select_db('CMS-Lite');
$query = mysql_query('SELECT * FROM news');
 while ( $row = mysql_fetch_array($query) ) {
                  foreach ($row as $col_value) {
                     print "$col_value";
                  }
                }
  • Вопрос задан
  • 279 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Текст ошибки читать не пробовали? Там написано что в mysql_num_rows передана строка, а не ресурс. И даже написано в какой именно строке. В приведенном вами куске кода этот вызов вообще отсутствует.

И вообще, проглатывать ошибки - плохая идея. Уберите собачки, к вызовам базы добавьте отображение ошибок.
mysql_query('SELECT * FROM news') or die(mysql_error());


И да, функции mysql_* устарели, в php7 их вообще выпилили. Пора осваивать PDO или хотябы mysqli.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы