За последние 24 часа нас посетили 20260 программистов и 1707 роботов. Сейчас ищут 1926 программистов ...

member function on a non-object

Тема в разделе "PHP и базы данных", создана пользователем Somebody, 13 июн 2010.

  1. Somebody

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

    С нами с:
    13 июн 2010
    Сообщения:
    2
    Симпатии:
    0
    Я новичок в php и у меня проблема:
    Код (Text):
    1. function Authorize($uLogin, $uPass, $sessId){
    2. global $result;
    3.  
    4. $query = sprintf("SELECT id, login, password, name FROM users WHERE login=%s AND password=%s ", $uLogin, $uPass);
    5.  
    6. if ($result = $mysqli->query($query)) {    //проблема здесь
    7.     while ($row = $result->fetch_assoc()) {
    8.         $array[]=$row;  }
    9.        
    10.        
    11.         if ($uLogin == $row['login'] && md5(md5($uPass).md5('php')) == $row['password']) {
    12.        
    13.         $query = sprintf("INSERT INTO `auth` VALUES((SELECT id FROM `users` WHERE login='".$uLogin."'),%s,1);", $sessid);
    14.        
    15.         if ($result = $mysqli->query($query))
    16.             return true;
    17.         return false;
    18.         }
    19. $result->close();  
    20.         }
    21.     $mysqli->close();
    22. }
    Fatal error: Call to a member function query() on a non-object in new.php on line 26

    искал в Интернете, но толком так и не понял, в чем же проблема и как её исправить.
    понял только, что нужно чтобы возвращался объект, но он не возвращается.
    заранее благодарен.
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    почитайте про область видимости переменных(в функции нету $mysqli)
    далее нужно немного почитать про конкатенцию в пхп и про борьбу с SqlInjecion. и забыть про sprintf()
    далее можно про паттерны почитать, впринципе, на вашем уровне можно разобраться

    про Singleton
    про SeviceLocator
    про Dependency Injection

    помогут вам красиво решить проблему с областью видимости =)
     
  3. Somebody

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

    С нами с:
    13 июн 2010
    Сообщения:
    2
    Симпатии:
    0
    если бы я мог разобраться лишь прочитав документацию, я бы, наверное, не просил помощи. более того, все, что делаю последние 4 дня, так это читаю.
    по теме: объявил $mysqli = new mysqli($dbHost, $dbUser, $dbPass, $dbName);
    появилась другая проблема - не получаю никаких данных от SQL. var_dump($array); показывает NULL
    думал, что-то не так с запросом, но не в нем дело.
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    почти уверен что проблема опять в области видимости переменных, только уже других.
    а посему, если бы вы читали документацию то её небыло бы.

    ключевые слова для гуглени я привёл.

    если сложно, начните с более простых вещей