$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');
Вы определяете строку, используя одинарные кавычки, и PHP не анализирует строки с разделителями одиночной кавычки. Чтобы получить переменную интерполяцию, вам нужно использовать двойные кавычки или конкатенацию строк (или их комбинацию). См. http://php.net/manual/en/language.types.string.php для получения дополнительной информации.
Также вы должны проверить, что mysql_query вернул действительный ресурс результата, иначе fetch_ *, num_rows и т. д. не будут работать с результатом, поскольку это не результат! IE:
$username = $_POST['username']; $password = $_POST['password']; $result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username'); if( $result === FALSE ) { trigger_error('Query failed returning error: '. mysql_error(),E_USER_ERROR); } else { while( $row = mysql_fetch_array($result) ) { echo $row['username']; } }
http://us.php.net/manual/en/function.mysql-query.php для получения дополнительной информации.
Поскольку вы указываете поле, которое не существует во всех документах вашего .sort()
, тогда там, где оно отсутствует, значение считается null
, что, конечно, имеет более низкий порядок и, следовательно, более высокий приоритет в отсортированном чем любое другое значение.
Единственный способ изменить этот ответ состоит в том, чтобы по существу «спроектировать» более высокое значение, из которого можно сортировать, чем другой ожидаемый диапазон значений, чтобы эти результаты упали до конца другие результаты. Такие «взвешенные» запросы с прогнозируемым значением требуют метода .aggregate()
:
db.collection.aggregate([
{ "$project": {
"name": 1,
"bids": 1,
"sortfield": { "$ifNull": [ "$bids", 999999 ] }
}},
{ "$sort": { "sortfield": 1 } }
])
Используется $project
и $sort
, чтобы получить результат в желаемом порядке. Сначала выполните операцию $ifNull
, чтобы решить, что разместить в свойстве «sortfield» проецируемого документа в зависимости от того, какие данные имеются, а затем использовать это значение в рамках этапа конвейерной сборки $sort
.
Вы можете также интегрировать обычные операции запроса с конвейером $match
в начале конвейера, что было бы рекомендовано сократить документы, необходимые для обработки в $project
.
Если документы, не содержащие требуемого поля, значение «sortfield» будет тогда выше ожидаемых значений, и эти документы будут отображаться в конце, а не в начале.