За последние 24 часа нас посетили 17960 программистов и 1589 роботов. Сейчас ищут 1528 программистов ...

Warning: mysql_query(): supplied argument is not a valid MyS

Тема в разделе "PHP для новичков", создана пользователем istifadeci, 21 июл 2011.

  1. istifadeci

    istifadeci Активный пользователь

    С нами с:
    19 апр 2009
    Сообщения:
    6
    Симпатии:
    0
    Выдает такая ошыбка
    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in T:\home\virtual\prime\serfeli\config\db.php on line 20
    Database query failed

    config.php
    PHP:
    1. <?php
    2. class Config{
    3. var $BASE_URL = "localhost" ;
    4. var $DB_HOST = "localhost" ;
    5. var $DB_USER = "yeni" ;
    6. var $DB_PASS = "yeni" ;
    7. var $DB_NAME = "yeni" ;
    8. }
    9. ?>
    db.php
    PHP:
    1. <?
    2. require_once "config.php";
    3. class Db extends Config {
    4. private $connection;
    5.  
    6. private function open_connection () {
    7. $connection = mysql_connect ($this->DB_HOST, $this->DB_USER, $this->DB_PASS);
    8. if (!$connection) {
    9. die ("DB connection failed".mysql_error ());
    10. }
    11. else {
    12. $db_select = mysql_select_db ($this->DB_NAME);
    13. if (!$db_select) {
    14. die ("DB selection failed".mysql_error ()) ;
    15. }
    16. }
    17. mysql_query ("set names utf8") or die ("set names utf8 failed") ;
    18. }
    19. public function sql ($query) {
    20. $result = mysql_query ($query, $this->connection);
    21. if (!$result) {
    22. die ("Database query failed".mysql_error ()) ;
    23. }
    24. return $result;
    25. }
    26. }
    27. $db = new Db;
    28. $db->sql("SELECT*FROM menyu") ;
    29. ?>
     
  2. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    переменная $connection - доступна только внутри функции в которой объявлена.
    а тут
    PHP:
    1. $result = mysql_query ($query, $this->connection);
    переменная глобальная для класса.
    $connection не равна $this->connection
    и почем вы решили использовать линк на соединение но в выборе базы не используете линк, будут ошибки при по пытке создать несколько соединений.
    то же самое в задании кодировки.

    попробуйте переписать так
    PHP:
    1. private function open_connection () {
    2.     $this->connection = mysql_connect ($this->DB_HOST, $this->DB_USER, $this->DB_PASS);
    3.     if (!$this->connection) {
    4.         die ("DB connection failed".mysql_error ());
    5.     } else {
    6.         $db_select = mysql_select_db ($this->DB_NAME, $this->connection);
    7.         if (!$db_select) {
    8.             die ("DB selection failed".mysql_error ()) ;
    9.         }
    10.     }
    11.     mysql_query ("set names utf8", $this->connection) or die ("set names utf8 failed") ;
    12. }
     
  3. istifadeci

    istifadeci Активный пользователь

    С нами с:
    19 апр 2009
    Сообщения:
    6
    Симпатии:
    0
    Сменил код, ошибка остается как прежнем
     
  4. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    а где вы вызываете функцию open_connection ? я вижу только её объявление, но не где она не вызывается, а значит и соединения с БД не будет.

    ps не используйте mysql_connect и другие функции, возможно в скором времени они вообще перестанут работать.
    используйте pdo или mysqli
     
  5. Котэ

    Котэ Активный пользователь

    С нами с:
    20 июл 2011
    Сообщения:
    35
    Симпатии:
    0
    PHP:
    1. $result = mysql_query ($query, $this->connection);
    $this->connection - у тебя пуст
     
  6. istifadeci

    istifadeci Активный пользователь

    С нами с:
    19 апр 2009
    Сообщения:
    6
    Симпатии:
    0
    Вызвал функцию open_connection и все заработало. Спасибо ))