2013-07-05 2 views
1

У меня возникли проблемы с возвратом числа строк. Я хочу, чтобы мой код проверял, существует ли имя пользователя, и если оно возвращается, то возвращаем ошибку. То, как я это делаю, это то, что num_rows возвращает число, большее 0. Я еще не реализовал эту часть, я просто пытаюсь заставить ее вернуть число строк прямо сейчас. Вот мой текущий код:MSQLI, имеющий проблемы с num_rows

$hostname = ''; //SET SERVER/HOSTNAME 
    $dbusername = ''; //SET DATABASE USERNAME 
    $dbname = ''; //SET DATABASE NAME 
    $dbpassword = ''; //SET DATABASE USERNAME 
    $link = mysqli_connect($hostname, $dbusername, $dbpassword, $dbname); 

    if (!$link) 
    { 
     $systemerror = 'Connect Error' . mysqli_connect_errno() . mysqli_connect_error(); 
     $error = "there has been an error"; 
} 


$sql = "SELECT username FROM affiliates WHERE username = $username"; 
    $result = mysqli_query($link, $sql, MYSQLI_USE_RESULT); 

    if (!result) 
    { 
     $error = "There was an error with our system. Please contact All Choice Dental or wait a few minutes. Thank you."; 
     goto error; 
    } 
    $row_cnt = $result->num_rows; 
    echo $row_cnt; 

У меня даже нет нуля для num_rows, поэтому что-то должно быть неправильно. Я знаю, что могу подключиться к базе данных, потому что я могу вставлять строки с использованием того же соединения.

+0

У вас есть error_reporting enabled? Не видя, что «эхо» подразумевает, что у вас может быть более ранняя фатальная ошибка. Прежде всего я отмечаю, что '$ username', вероятно, должно быть одноколейным в SQL. Возможно, вы не используете PHP 5.3 и не имеете 'goto'. –

+0

В любом случае, 'error_reporting (E_ALL); ini_set ('display_errors', 1); '... всегда делайте это в процессе разработки. –

ответ

-1

Вы смешиваете MySQL OOP и процедурный - это плохой стиль кодирования.

Чтобы получить количество строк в процедурном, используйте mysqli_num_rows($result)

+0

На самом деле это должно работать нормально, если я помню. –

+0

Что не так с перемешиванием? –

+0

Забыл упомянуть цитаты как @MarcB. Я обновил ответ, отметив, что это просто плохой стиль кодирования. –

1

$username никогда не определяется в коде, поэтому запрос выходит как

SELECT username FROM ... username = 

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

$username = 'fred'; 

будет производить

SELECT username FROM affiliates WHERE username = fred 

и вы, вероятно, иметь fred поле в таблице филиалов нет. Поле должно быть заключено в кавычки:

SELECT username FROM ... WHERE username = '$username'; 

и вы должны серьезно рассмотреть вопрос об использовании подготовленных заявлений вместо этого, так как это своего рода конструкции уязвима для SQL injection attacks.

+0

Извините, да $ username определено ранее в коде. Он получает сообщение VIA со страницы формы, которую у меня есть. – dkeeper09

+0

Итак, если я изменю его на $ row_cnt = mysqli_num_rows ($ result); Затем я получаю следующую ошибку: mysqli_num_rows() [function.mysqli-num-rows]: Функция не может использоваться с MYSQL_USE_RESULT – dkeeper09

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

  • Нет связанных вопросов^_^