热门更新mysql_fetch_array

时间:2009-10-04 06:21:01

标签: php mysql

正如您将看到我正在获取该列,并尝试使用新数据更新列。 $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 个答案:

答案 0 :(得分: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]元素作为一个ID,比如$ 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.

答案 1 :(得分:2)

$row[0]实际上在双引号字符串中有效。我认为您的问题是拼写错误:首先您为$rez2分配一个值,然后在查询中使用$res2

答案 2 :(得分:1)

get_final_url($url);做什么?如果它没有用引号括起link,并处理正确的字符串转义(即mysql_real_escape_string),那么您的查询将无效。