2013-04-21 2 views
-2
function getGamesBySearch($criteria) { 
try { 
     $sortedBy = 'Name'; 
     $db = getDBConnection(); 
     $query = "SELECT * 
        FROM game 
        WHERE Name LIKE :criteria 
        ORDER BY :sortBy DESC"; 
     $statement = $db->prepare($query); 
     $statement->bindValue(':criteria', '%'.$criteria.'%'); 
     $statement->bindValue(':sortBy',$sortedBy); 
     $statement->execute(); 
     $results = $statement->fetchAll(); 
     $statement->closeCursor(); 
     return $results;   // Assoc Array of Rows 
    } catch (PDOException $e) { 
     $errorMessage = $e->getMessage(); 
     include '../view/errorPage.php'; 
     die; 
    }  
} 

По какой-то причине мой ассоциативный массив всегда возвращается в мой заказ GameID, когда мне нужно, чтобы он был в порядке имени? Это только бонус за класс, который я принимаю, но помощь будет оценена.Проблемы с сортировкой по моему запросу sql

+0

http://stackoverflow.com/questions/15990857/reference-frequently-asked-questions-about-pdo#15991422 –

ответ

1

Вы не можете использовать заполнители в операторах SQL для имен столбцов.

Вы можете использовать их только для значений.

Ваш запрос сортируется по буквальной строке - что одинаково для всех строк.

Вы эффективно делать

ORDER BY 'Name' 

вместо

ORDER BY Name 
+0

Ok , Это быстрое изменение, чтобы увидеть, могу ли я это сделать, как бы я прошел через sortValue? Или мне нужно будет задать запрос по умолчанию для каждого типа сортировки. – user2305203

+0

Вам нужно будет встроить имя столбца в строку запроса. например "... ORDER BY' $ Name' ... ". Убедитесь, что вы правильно проверяете $ Name. с помощью белого списка. – fisharebest

+0

Хорошо, спасибо, вы очень помогли! – user2305203

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