PHP SQL Search с повторяющимися записями

Я пытаюсь выполнить поиск, который будет искать в базе данных либо фамилию, либо имя, а затем возвращать эти значения и выводить их. Я зашел так далеко, но вот где я застреваю, когда есть повторяющаяся запись, такая как имя.

Ex; 2 записи в базе данных имеют то же значение FirstName, что и Bill, и разные значения LastName

Как я могу вернуть все те же имена? Я пробовал несколько решений, но не смог получить его. Я чувствую, что упускаю что-то действительно легкое, но я слепой и не вижу этого.

$query = $handler->query("SELECT * FROM RWApplicants GROUP BY FirstName HAVING COUNT(*) >= 1");
$r = $query->fetch(PDO::FETCH_ASSOC);
if($r){

echo "first";
print_r($r);}

Дает мне только первый ряд, но не остальные

Я пробовал это и различные варианты этого … Надеюсь, кто-нибудь может помочь! Спасибо!

0

Решение

Вы смешиваете библиотеки БД. с помощью ->query() предполагает, что вы используете PDO или mysqli. Но затем вы пытаетесь получить фактические строки результатов с mysql_fetch_array(),

Библиотеки «большой тройки» (mysql, mysqli и PDO) НЕ взаимозаменяемы, а дескрипторы соединения / результата из одной библиотеки совершенно бесполезны в других.

Поскольку вы используете pdo / mysqli, вызов mysql_fetch вернет логическое значение FALSE для указания сбоя, а не массив данных.

1

Другие решения

У вас есть несколько проблем, но я посмотрю, смогу ли я вам чем-то помочь. Возможно, проблема заключается в смешанных методах доступа к БД, но в самом коде есть нерегулярность …

в то время как ($ F = mysql_fetch_array ()) {
$ FirstName = $ result [‘FirstName’];

Вы назначаете «$ f» в качестве итератора, а затем выводите «$»?

Вот более стандартный подход, который должен работать:

$query = $handler->query("SELECT * FROM RWApplicants WHERE FirstName ='$Search'");
$r = $query->fetch();
if($r){
while($f=mysql_fetch_array($r)){
$FirstName  =$f['FirstName'];
$LastName=$f['LastName'];
$ID=$f['ID'];
echo "<ul>\n<li>" .$FirstName . " " . $LastName .  "</li>\n</ul>";
}
}
0

Если вы пытаетесь найти повторяющиеся записи FirstName, попробуйте использовать это

("SELECT * FROM RWApplicants GROUP BY FirstName HAVING COUNT(*) > 1")

Попробуйте это, если хотите получить все строки с дубликатом FirstName

("SELECT * FROM RWApplicants WHERE FirstName IN(SELECT FirstName FROM RWApplicants GROUP BY FirstName HAVING count(*) > 1)");
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector