2009-10-04 70 views
0

正如您將看到的,我正在讀取列,並嘗試使用新數據更新列。 $result2行是我的問題,我不認爲我可以在那裏添加$row[0]。我該怎麼做?熱點更新mysql_fetch_array

$result = mysql_query("SELECT link FROM items LIMIT 3"); 

while($row = mysql_fetch_array($result)) 

    { 

    $url=($row[0]); 

$rez2 = get_final_url($url); 

$result2 = mysql_query("UPDATE items SET link = $rez2 WHERE id = $row[0] LIMIT 1") 

or die(mysql_error()); 

回答

4

你應該使用引號:

mysql_query("UPDATE items SET link = '{$res2}' WHERE id = $row[0]"); 

而且這將是理想的使用函數mysql_escape_string()函數。

所以:

$rez2 = mysql_escape_string(get_final_url($url)); 

你也正在嘗試使用$行[0]爲紐帶和ID。很可能你希望$ row [0]元素是一個ID,並且像$ row [n],其中n> 0是一個鏈接。但是,如果你仍然想使用鏈接,您應該按以下方式查詢:

$result2 = mysql_query("UPDATE items SET link = '$res2' WHERE link = {$row[0]}"); 

而且不要忘了逃跑$行

這是一個主意,用mysql_fetch_assoc()函數 - 中這種情況下你會得到一個關聯數組,所以你可以通過sql列名訪問元素。而作爲結果,你可以這樣做:

$result = mysql_query("SELECT id, link FROM items LIMIT 3"); 

while($row = mysql_fetch_assoc($result)) 

{ 

    $url=($row['link']); 

    $rez2 = mysql_escape_string(get_final_url($url)); 

    $result2 = mysql_query("UPDATE items SET link = '{$res2}' WHERE id = {$row['id']}") 

    or die(mysql_error()); 
} 

此外,如果ID是你不需要LIMIT 1更新查詢主鍵。

+0

明白了'$ rez2'不像'{$ res2 }' 你是reeeaaalll ggooood ... Thx一堆 – Ossi 2009-10-04 07:02:37

2

$row[0]實際上在雙引號字符串中是有效的。我認爲你的問題是一個拼寫錯誤:首先你爲$rez2賦值,然後在你使用$res2的查詢中。

+0

不錯,趕上;)這是有益的,但我仍然得到Mysql語法錯誤: '://www.newurl.com/test'第1行 – Ossi 2009-10-04 06:34:15

1

get_final_url($url);是做什麼用的?如果它沒有用引號包圍link,並處理正確的字符串轉義(即mysql_real_escape_string),則您的查詢將不起作用。