php
  • mysql
  • 2013-09-24 57 views 0 likes 
    0

    我知道這應該是一種簡單,但我不能自己弄明白。因此,繼承人的代碼:

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

    $結果返回多個值。它回聲很好,就像「樹袋鞋」一樣。但在* mysql_query *中,只有最後一個結果(本例中的鞋)在我的表中更新。我怎樣才能讓它變得更新?

    非常感謝!

    +0

    首先,你不應該使用MySQL庫,應該使用MySQLi。其次,你還沒有顯示任何錯誤,在'mysql_query()'末尾添加'或者死(mysql_error())'來查看是否有任何問題。 –

    +0

    $結果和$行似乎無處顯示...我想你打算使用$結果和$ row01? – Hugehornet

    +0

    什麼是$ specArr? – Mihai

    回答

    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']."' "); 
    } 
    
    +0

    $ row是在其他地方定義的,但是它工作的很好,因爲它指向'產品'表中的正確行。已經過測試 – crashtest

    +0

    正如您已經正確指出的那樣,問題在於表得到更新多次。我該如何解決這個問題? – crashtest

    +0

    @crashtest查看代碼示例。將查詢中的$ row ['id']'更改爲'$ row01 ['id']'。這應該使用當前循環項目中的索引。 – Kami

    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 
    
    相關問題