ошибка строки SQL

Тема в разделе "PHP", создана пользователем KODEAK, 6 апр 2011.

Модераторы: latteo
  1. KODEAK

    KODEAK

    Регистр.:
    11 апр 2009
    Сообщения:
    161
    Симпатии:
    15
    Тут создаю небольшой проект, так сказать учусь и написал регистрацию, и возникла проблемы с провекой данных
    Ошибка
    Undefined property: mysqli_result::$num_row
    вот такой функция выполняет проверку
    PHP:
    function register($username$email$password)
    {
        
    // Подключаем к базе данных
        
    $conn db_connect();
        
    // Нет соединения с базой данных
        
    $result $conn->query("select * from user where username='$username'");
        if(!
    $result)
        {
            throw new 
    Exception('<p class="error">Невозможно выполнить запрос в БД.</p>');
        }
        
    // Проверить уникальность имени
        
    if($result->num_row 0)
        {
            throw new 
    Exception('<p class="error">Это имя уже занять, вернитесь на <a href="registration.php">страницу регистрации</a> и попробуйте другое имя.</p>');
        }
        
    // Если нету ошибок создать пользователя
        
    $result $conn->query("insert into user values ('$username', sha1('$password'), '$email')");
        if(!
    $result)
        {
            throw new 
    Exception('<p class="error">Невозможно сохранить данные в БД.</p>');
        }
        return 
    TRUE;        
    }
    Не могу понять в чем проблема, вроде же все верно ?
     
  2. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Сложно сказать, не зная кода используемого класса для работы с БД, но видимо проблема в том, что после
    PHP:
    $result $conn->query("select * from user where username='$username'");
    вы не выполняете нечто, что должно выглядеть как
    PHP:
    $res $conn->db_fetch_array($result);
     
    KODEAK нравится это.
  3. KODEAK

    KODEAK

    Регистр.:
    11 апр 2009
    Сообщения:
    161
    Симпатии:
    15
    ага спасибо, но только сейчас нашел ошибку в строке
    PHP:
        if($result->num_row 0
    а должно быть
    PHP:
        if($result->num_rows 0
    и кстати я пока пишу без классов =))
     
  4. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    :smmne: В каком это месте вы пишите без классов?

    Судя по этой записи:
    PHP:
    ...$result->num_rows...
    У вас используется какой то класс для работы с БД.
     
  5. KODEAK

    KODEAK

    Регистр.:
    11 апр 2009
    Сообщения:
    161
    Симпатии:
    15
    без явных свои классов =), я пока правда не сильно в этом силен поэтому могу сказать бред =)
    такой вопрос я делаю запрос к базе данных
    PHP:
        $result $conn->query("SELECT name from user where username='$username'");
    как вывести из этой же строки с определенным пользователем другие его данные about и т.д ?
     
  6. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Просто подставьте название нужного вам поля или замените название поля на *, тогда будет выборка всех полей для данной записи...
    PHP:
    $result $conn->query("SELECT * from user where username='$username'");
     
  7. KODEAK

    KODEAK

    Регистр.:
    11 апр 2009
    Сообщения:
    161
    Симпатии:
    15
    Еще один маленький вопрос, делаю запрос на вывод с конца таблицы
    PHP:
    $result mysql_query("SELECT post_title FROM posts ORDER BY post_title DESC");
    $num_results mysql_num_rows($result);
    $row mysql_fetch_object($result);
    mysql_close($link);
    и вывожу данные
    PHP:
    for($i 0$i $num_results$i++)
                    {
                            echo 
    $row->post_title;
                    }
    в таблице 2 строки title, но почему то выводит только последнюю, в чем ошибка ?
    в способе вывод ? или в запросе ?
     
  8. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Примерно так
    PHP:
    $result mysql_query("SELECT post_title FROM posts ORDER BY post_title DESC");
    $num_results mysql_num_rows($result);
    for(
    $i 0$i $num_results$i++)
    {
    $row mysql_fetch_object($result);
    echo 
    $row->post_title;
    }
    mysql_close($link);
     
    KODEAK нравится это.
  9. KODEAK

    KODEAK

    Регистр.:
    11 апр 2009
    Сообщения:
    161
    Симпатии:
    15
    Спасибо, а еще такой вопрос какой подход лучше для извлечения данных и sql ?
    процедурный или объекто-орентированный ?
     
  10. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Ну это уж не вопрос о sql, запросы к базе один фиг одни и те же будут.