当我尝试更新我的表而不是递增url数组时,打印到表中的内容只是url数组中的最后一个条目。
当我回显$url
时,我可以告诉它正确地循环通过数组。当我回显$currentId
时,增量正确。为什么查询不输入表格中的每一行$url
。这里发生了什么,我不明白?
$currentId = 1;
foreach($pages as $url)
{
$query = "UPDATE pageurls SET url='$url' WHERE id='currentId'";
mysql_query($query);
echo($url.'<br/>');
$currentId++;
}
答案 0 :(得分:10)
而不是
$query = "UPDATE pageurls SET url='$url' WHERE id='currentId'";
...查找与字符串“currentId”匹配的ID,尝试...
$query = "UPDATE pageurls SET url='".mysql_real_escape_string($url).
"' WHERE id=".$currentId;
由于你自己生成currentId,它是安全的,但是你应该使用mysql_real_escape_string来逃避$ url。
编辑:正如@Topener指出的那样,我在currentId之前错过了一个$,编辑修复它。
答案 1 :(得分:5)
您正在比较字符串:WHERE id='currentId'
应该是变量WHERE id='$currentId'
答案 2 :(得分:2)
currentId用作字符串,而不是变量。
此外,您应确保使用mysql_real_escape_string()
转义这些值答案 3 :(得分:0)
此行中有错误:
$query = "UPDATE pageurls SET url='$url' WHERE id='currentId'";
我会改变它:
$query = "UPDATE pageurls SET url='".$url."' WHERE id=".$currentId;
答案 4 :(得分:0)
确保您正确转义查询中使用的变量(intval()
/ id
的{{1}},如果它来自用户输入或任何外部来源,并且{ {1}} {1}},正如@Louis所说。然后将它们插入到查询中,如果它确实是一个整数,则不引用$currentId
。
mysql_real_escape_string()
答案 5 :(得分:-1)
您正在使用字符串而不是变量!
这个查询很糟糕!如果你更新很多行,它将为你带来很多资源!
看看:“Update Multiple Rows With Different Values and a Single SQL Query”