$ results会返回多个结果,但只有最后一个会在mysql_query上更新。需要全部更新

时间:2013-09-24 11:06:06

标签: php mysql

我知道这应该很简单,但我无法自己搞清楚。所以继承代码:

while($row01=mysql_fetch_array($res01))
{
    $results=stripslashes($row01['spec_search'])." ";
    echo $results;
    mysql_query("update products set search='".$results."' WHERE id='".$row['id']."' ");
}

$ results 会返回多个值。它回音得很好,比如“树袋鞋”。但是在* mysql_query *中,只有最后一个结果(本例中的鞋子)在我的表中得到更新。我怎样才能让一切都得到更新?

非常感谢!

2 个答案:

答案 0 :(得分:0)

您在查询中使用$row['id'],但$row01['id']访问了循环的当前行。

数据库不会更新一次,但会多次更新。但是,当更新应用于同一行时,只有最后一次更新可见。

将您的代码更新为以下

while($row01=mysql_fetch_array($res01))
{
    $results=stripslashes($row01['spec_search'])." ";
    $specArr[$row['id']][]=$row01['id'];
    echo $results;
    mysql_query("update products set search='".$results."' WHERE id='".$row01['id']."' ");
}

答案 1 :(得分:0)

我找到了将数据放入数组然后将其恢复的正确方法。这是:

$results = array(); //make an array
while($row01=mysql_fetch_assoc($res01)) //assoc is needed, not ok with array!
{
    $res=stripslashes($row01['spec_search'])." ";
    $results[] = $res; //load up in array
    mysql_query("update products set search='".implode('', $results)."' WHERE id='".$row['id']."' ");
}
        echo implode('', $results); //this is how get data back from array