$keyyy = null;
while ($r = mysqli_fetch_array($rs)){
    $tagg = array($r['name']);
    foreach ($tagg as $key) {
      $keyyy = $key.',';
    }
    
    UPDATE `blog` SET
      `tags` = '{$keyyy}'
      WHERE url = 'XXX'
}
印出結果是
1,2,3,4,5,
只是為什麼我 update 到數據表,都只有 1, 呢?
而不是 1,2,3,4,5,
假設 A 文章tag是 1,2,3, B文章tag是 3,4,5, (確定篩選好了)
如果在 $keyyy = $key.','; 加上 . 變 $keyyy .= $key.',';
B文章被更新的時候會變成 1,2,3,3,4,5, ....以此類推,會把前一個文章的 tag 累加上來
如果不加 . 又只會把最後一個字串更新上去...
A文章: 1, B文章:3,
這是什麼問題??
沒看到你印出在哪裡...
我猜你應該是要這樣
$keyyy .= $key.',';
PHP不熟,
不過感覺一開始的 $keyyy = null 加上我改的部份應該會導致錯誤,
宣告的地方是不是要改成
$keyyy = '';
我試過 $keyyy .= $key.','; 了
但他會把上一個文章的 tag 累加上來
所以我不解的是,竟然都可以把上一個文章所有tag都累加過來了,為什麼我單純 $keyyy = $key.','; 卻不能得到所有 tag,永遠都是第一個被抓到而已
改成這樣
while ($r = mysqli_fetch_array($rs)){
    $keyyy = '';
    $tagg = array($r['name']);
    foreach ($tagg as $key) {
      $keyyy .= $key.',';
    }
    
    UPDATE `blog` SET
      `tags` = '{$keyyy}'
      WHERE url = 'XXX'
}
前面加 $keyyy = ''; 將上一個文章的資料清掉
$keyyy .= $key.','; 將這一篇文章的資料累加
我也很不解, 照理說應該是取最後一筆資料才對,
除非你是由大到小...
喔不對,是最後一筆
用了你的方式後,我發現又回到只取最後一筆了。好怪。。
asys0512
這樣呢?
while ($r = mysqli_fetch_array($rs)){
    $keyyy = '';
    foreach ($r as $key) {
      $keyyy .= $key['name'].',';
    }
    
    UPDATE `blog` SET
      `tags` = '{$keyyy}'
      WHERE url = 'XXX'
}
出現錯誤:Illegal string offset 'name'
這問題真的也太有趣。。。一開始我直接印 foreach 取出來的 $keyyy時,是可以順利印出 1,2,3,4,5, 的
但是 UPDATE 之後反而只有最後一筆 5, 有進去。。。
然後用 .=  這招竟然把上一個文章的全部也加進來,這是啥鬼問題。。。。
你沒有用我最後發的那個方法吧,
那個方法應該不會這樣。
其實你最好拿個紙筆寫一下流程...
思考一下你的程式是怎麼跑的...
$rs = $do->query(
    "SELECT
      t.name as name,
      tr.object_id as object_id
    FROM wp_terms as t
    JOIN wp_term_relationships as tr ON tr.term_taxonomy_id = t.term_id
    JOIN blog as b ON b.url = tr.object_id "
  );
while ($r = mysqli_fetch_array($rs)){
  $keyyy = '';
  $keyyy .= $r['name'];
  $do->query(
    "UPDATE `blog` SET
    `tags` = '{$keyyy}'
    WHERE url = '{$r['object_id']}' "
  );
}
我有用你那個方式,但都一樣只會丟最後的進去資料庫。。很怪
而我現在改成這樣,結果也是一樣,所以我搞不懂哪裡有問題
仔細看了一下裡面那麼foreach跟浩瀚星空說得一樣沒有用啊...
改成這樣呢?
$keyyy = null;
while ($r = mysqli_fetch_array($rs)){
    $keyyy .= $r['name'];
}
UPDATE `blog` SET
`tags` = '{$keyyy}'
WHERE url = 'XXX'