2013-11-15 55 views
-4

我有一個腳本,在MySQL中的用戶數據庫中將重名重命名爲「$ name2」,但由於某種原因,我得到錯誤「未定義索引」,每個重複的用戶名和「foreach 「循環沒有被使用。該代碼是下面的:PHP未定義的索引與MySQL結果數組

$result = mysql_query("select name, count(*) cnt from users group by name having cnt > 1 and name!=''"); 
$rowsCnt = array(); 
while($row = mysql_fetch_assoc($result)){ 
    $rows[] = $row; 
    $rowsCnt[ $row['name'] ]++; 
} 

foreach($rows as $index => $row) { 
       mysql_query("UPDATE users SET duplicate=1, name = '".mysql_real_escape_string($row['name'])."2' WHERE name = '".mysql_real_escape_string($row['name'])."'"$ 
} 
+3

爲什麼你有一個'while'循環,然後是一個'foreach'循環?它看起來不像你使用'$ rowsCnt' – Machavity

+0

你不認爲完整的錯誤信息可能在這裏有用嗎? – Phil

+2

從[mysql_query](http://php.net/manual/en/function.mysql-query.php)上的PHP手冊:此擴展從PHP 5.5.0開始已被棄用,並且將來會被刪除。相反,應該使用MySQLi或PDO_MySQL擴展。 – maiorano84

回答

2

未定義索引被拋出,因爲這條線的:

$rowsCnt[$row['name']]++; 

$行[「名稱」]的值不表示在$ rowsCnt陣列中的任何項換句話說,數組$ rowCnt中沒有名稱爲$ row ['name']的索引。

備註:您可能需要重寫代碼,因爲它可以用更好的方式編寫。

+0

謝謝你,會做 – Crashuncle