Горячее обновление mysql_fetch_array

0

Как вы увидите, я извлекаю столбец и пытаюсь обновить столбец новыми данными. $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()); 
Теги:

3 ответа

4
Лучший ответ

Вы должны использовать кавычки:

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 в запросе обновления.

  • 0
    Получил с этим '$ rez2' не как '{$ res2}' Вы reeeaaalll ggooood ... Спасибо
2

$row[0] действительно действителен в строках с двойными кавычками. Я думаю, что ваша проблема - орфографическая ошибка: сначала вы назначаете $rez2 значение, а затем в запросе, который вы используете $res2.

  • 0
    Хороший улов;) Это было полезно, но я все еще получаю синтаксическую ошибку Mysql: ': //www.newurl.com/test' в строке 1
1

Что делает get_final_url($url);? Если он не окружает link кавычками и обрабатывает надлежащее строковое экранирование (т.е. mysql_real_escape_string), ваш запрос не будет работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню