Php $results返回多个结果,但在mysql\u查询中只更新最后一个结果。需要全部更新

Php $results返回多个结果,但在mysql\u查询中只更新最后一个结果。需要全部更新,php,mysql,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返回多个值。它

我知道这应该有点简单,但我自己就是想不出来。代码如下:

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*中,我的表中只更新最后一个结果(本例中为shoes)。我怎样才能使一切都得到更新


非常感谢

您在查询中使用的是
$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']."' ");
}

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

$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

首先,您不应该使用MySQL库,应该使用MySQLi。其次,您没有让它显示任何错误,在
mysql\u query()
的末尾添加
或死亡(mysql\u error())
以查看是否有任何问题。$result和$row似乎不知从何处出现。。。我想您打算使用$results和$row01?没有显示任何错误,正如Kami指出的:“数据库不是更新一次,而是多次更新。但是,由于更新应用于同一行,只有最后一次更新可见。”$result是我的错别字,它是$results。修正了$行已定义(此处未显示),这很好,不应该成为问题。它已经被单独测试过了$specArr只是剩余的代码。我忘了把它从这里拿走。谢谢你的指点$行是在别处定义的,但它指向“products”表中的正确行,因此效果良好。这已经过测试,因为您已经正确地指出了问题是表被更新了多次。我怎样才能避开它?@crashtest查看代码示例。将查询中的
$row['id']
更改为
$row01['id']
。这应该使用当前循环项的索引。$row01来自另一个表,我从中获取spec_搜索,但要更新的表是定义了$row的表,因此定义正确。因此,这部分是好的,因为它是。问题正是您描述的多个更新的问题。@crashtest对同一行的多个更新正在发生,因为
$row['id']
在此循环中是相同的。从您的示例中,我认为您需要使用
$row01['id']
。如果情况并非如此,则更改
WHERE id='”
部分以使用正确的
id
值集。