正如您将看到我正在获取该列,并尝试使用新数据更新列。
$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());
答案 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
),那么您的查询将无效。