Я написал код для выбора дубликатов и группировки с использованием имени и фамилии. Я собираю их в многомерном массиве и дедуплируют/объединяют их, используя jQuery/Ajax на полученной странице. Я хотел бы спросить, есть ли лучший способ создания массива, чем то, как я это делаю. Вот мой код. Спасибо.Выберите дубликаты с PHP и MySql для процесса слияния
$dataArr=fetchDups($conn, 13, 5); // get a few at a time
print '<div style="clear:both;"></div><pre>';
print_r($dataArr);
print '</pre><div style="clear:both;"></div>';
function fetchDups($conn, $client_id, $limit='')
{
$sql=' SELECT * FROM `contacts` WHERE `clientid`=\'13\' GROUP BY fname, lname ';
//$sql=' SELECT DISTICT fname, lname, * FROM `clients` WWHERE `clientid`=\'13\' ';
$res=mysql_query($sql, $conn)or die(mysql_error());
$contactsRow=array();
while($row=mysql_fetch_array($res)){
echo $row['fname'].'<br>';
$contactsRow[]=$row;
}
mysql_freeresult($res);
$dataArr=array();
$i=0;
$limitNum=0;
//----------------------------------
foreach($contactsRow AS $rowNew){
$sql=' SELECT * FROM `contacts` WHERE `clientid`=\'13\' AND `id`!=\''.$rowNew['id'].'\'
AND (`fname` = \''.$rowNew['fname'].'\' OR `lname` = \''.$rowNew['lname'].'\')
';
//echo $sql;
$res=mysql_query($sql, $conn)or die(mysql_error());
$rowCountDup=mysql_num_rows($res);
if($rowCountDup>0){
$d=0;
$dataArr[$i]=array();
$dataArr[$i][$d]=$rowNew;
while($rowNew=mysql_fetch_array($res)){
$dataArr[$i][($d+1)]=$rowNew;
$d++;
}
$i++;
$limitNum++;
}
// limit the results. too many crashes the browser
if($limitNum==$limit){
break;
}
}
mysql_freeresult($res);
return $dataArr;
}
Можете ли вы пояснить, что вы на самом деле пытаетесь сделать? –
Я пытаюсь получить группы контактов, которые выглядят так, как будто они могут быть дублирующими в массив. Я изменил свой второй запрос на использование LIKE, но я все еще не уверен, что это лучший или самый быстрый способ сделать это. Для проверки будет возможно 300 000 или более записей. 'clientid' = \ '13 \' AND' id'! = \ ''. $ RowNew ['id']. '\' '. $ AddQuery.' И 'fname' LIKE \ '%'. Addlashes ($ rowNew ['fname']). '% \' AND' lname' LIKE \ '%'. Addslashes ($ rowNew ['lname']). '% \' – EricP