Вы должны использовать кавычки:
mysql_query("UPDATE items SET link = '{$res2}' WHERE id = $row[0]");
И было бы идеально использовать функцию mysql_escape_string ().
Итак:
$rez2 = mysql_escape_string(get_final_url($url));
Также вы пытаетесь использовать $ row [0] как ссылку и как идентификатор. Скорее всего, вы хотите, чтобы элемент $ row [0] был идентификатором, и что-то вроде $ row [n], где n> 0, чтобы быть ссылкой. Но если вы все еще хотите использовать ссылку, вы должны сделать запрос следующим образом:
$result2 = mysql_query("UPDATE items SET link = '$res2' WHERE link = {$row[0]}");
И не забудьте сбежать от $ row
хорошая идея использовать функцию 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. в запросе на обновление.