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