2016-08-31 2 views
0

я следовал до довольно старой учебник на Youtube и в видео он использовал mysql_result таким образом:Сложность преобразования mysql_result

return (mysql_result($result,0) == 1) ? true : false; 

И я понял mysql_result осуждается и хотел сделать то же самое, используя num_rows и сделал это вот так:

$query = "SELECT COUNT(`user_id`) FROM `users` WHERE `username`='$username'"; 
$result = mysqli_query($conn,$query); 
return(mysqli_num_rows($result) === 1) ? true : false; 

Но, похоже, это не работает, и я не могу понять, где я ошибся. Какие-либо предложения?

+0

Это COUNT всегда возвращает 1 строку, вам необходимо сравнить значение результата, который может быть 0,1 или более –

+0

я думал, что это то, что я делаю когда я использовал «return (mysqli_num_rows ($ result) === 1)? true: false;" ......... – Harun

+0

'mysqli_num_rows()' не проверяет значения данных, просто количество строк, следовательно, имя функции 'mysqli_num_rows()' .... вам нужно получить результат и проверьте фактическое значение, возвращаемое запросом –

ответ

1

Попробуйте что-то вроде этого

$query = "SELECT COUNT(`user_id`) as user_count FROM `users` WHERE `username`='$username'"; 
$result = mysqli_query($conn,$query); 
$row = mysqli_fetch_array($result,MYSQLI_ASSOC); 
return(($row["user_count"]) === 1) ? true : false; 
+0

Спасибо, брат, это на самом деле сработало ... Вы - живая заставка и только одно улучшение, я думаю, что мы должны использовать '==' вместо '===' в заявлении return ..... Еще раз спасибо! !!!!!!! – Harun

+1

Следующий шаг, научиться использовать подготовленные заявления –

+0

Будет делать @Mark Baker – Harun

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