2013-06-19 6 views
-1

Моя база данных имя таблицы «квадрат» структура выглядит следующим образом:Получить уникальное значение из БД MySQL

ID  Name URL   Role 
1  ab  www.url.com xy 
2  cd  www.url.com xy 
3  ef  www.url.com xy 
4  ab  www.url.com xy 
5  cd  www.url.com xy 
6  gh  www.url.com xy 

Теперь я хочу, чтобы получить уникальное значение из этой таблицы. Например. Уникальное имя: ab, cd, ef, gh с id, url и роль.

так что мой SQL запрос выглядит следующим образом:

$getpara = $_GET['role']; 
$getsquare = mysql_query("SELECT ID, DISTINCT (Name), URL, Role FROM Square WHERE Role = 
'$getpara'"); 

но получать сообщение об ошибке, может быть мой SQL-запрос неправильно. Можете ли вы, парни, помочь мне плз?

+0

Вы используете DISTINCT по одному значению, вам нужно сгруппировать. – sashkello

ответ

4

Попробуйте с GROUP BY вместо DISTINCT как

$getsquare = mysql_query("SELECT ID, Name, URL, Role 
          FROM Square 
          WHERE Role = '$getpara' 
          GROUP BY Name"); 

А также стараются избегать использования mysql_ * функции из-за них являются осуждается .Instead из них использовать mysqli_ * функции или операторы PDO

+0

Я пытаюсь ваш код .. –

+0

Не скомбинируйте строки SQL самостоятельно, вы открываете SQL-инъекцию. Используйте подготовленные заявления, как показано на http://php.net/manual/de/pdo.prepared-statements.php. –

+0

Я предложил то же самое в моем ans – Gautam3164

0

использования GROUP BY, DISTINCT работает со всеми рядами,

$getsquare = mysql_query("SELECT ID, Name, URL, Role FROM Square WHERE Role = '$getpara' GROUP BY Name"); 
0
$getpara = $_GET['role']; 
$getsquare = mysql_query("SELECT DISTINCT Name, ID, URL, Role FROM Square WHERE Role = 
'$getpara'"); 

Попробуйте этот вариант без «()» и DISTINCT.

0

Просто удалите DISTINCT, и ваш запрос будет работать нормально. Поскольку у вас есть уникальные имена, DISTINCT CLAUSE не требуется.

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