我編寫了一些代碼來選擇重複項並使用姓和名分組。我將它們收集到一個多維數組中,並在結果頁面上使用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;
}
您能澄清一下您實際正在嘗試做什麼嗎? – 2009-12-03 02:26:23
我試圖讓一組聯繫人看起來像他們可能重複到一個數組中。我改變了我的第二個查詢使用LIKE,但我仍然不確定這是否是最好的或最快的方式來完成它。將有可能有300,000或更多的記錄檢查。 'clientid' = \'13 \'AND'id'!= \''。$ rowNew ['id']。'\''。$ addQuery。' AND'fname' LIKE \'%'。addslashes($ rowNew ['fname'])。'%\'AND'lname' LIKE''''addslashes($ rowNew ['lname'])。'%\' – EricP 2009-12-03 04:10:22