2014-02-24 27 views
2

有限知識MySQL用戶在這裏。我已經運行下面的PHP代碼的一些數據,我的MySQL錶轉換,但它似乎並不奏效:PHP代碼轉換MySQL表不能正常工作

<?php 
include("../minimum_init.php"); 

/* Convert existing buddy_ban_table to user userid as key */ 

$bbrecs = $osDB->getAll('select * from ! ',array(BUDDY_BAN_TABLE)); 
foreach ($bbrecs as $bbrec) { 
    if (is_int(trim($bbrec['userid']))) { 
     $userid = $bbrec['userid']; 
    } else { 
     $userid = $osDB->getOne('select id from ! where username = ?',array(USER_TABLE, $bbrec['userid'])); 
    } 
    if (is_int(trim($bbrec['ref_userid']))) { 
     $ref_userid = $bbrec['ref_userid']; 
    } else { 
     $ref_userid = $osDB->getOne('select id from ! where username = ?',array(USER_TABLE, $bbrec['ref_userid'])); 
    } 
    if ($userid > 0 and $ref_userid > 0) { 
     $osDB->query('update ! set userid=?, ref_userid=? where id=?', array(BUDDY_BAN_TABLE, $userid, $ref_userid, $bbrec['id'])); 
    } 
} 
echo("Update process of buddy_ban table Complete<br />"); 
/* Update process of buddy_ban table Complete */ 
?> 

的問題是,我更新到該軟件的最新版本,它現在要求到具有useridref_userid列而不是舊版本具有的usernameref_username列的xxx_buddy_ban_list表。

我認爲這代碼應該由它包含標題爲usernameid在我的網站上每個成員的列xxx_user表中獲取數據到用戶名轉換爲用戶ID的。但是,當我用這段代碼打開頁面時,它顯示消息「更新buddy_ban表完成的進程」,但數據庫中沒有任何更改。

代碼包含在軟件更新zip包中。我在論壇上發佈了這個問題,但沒有回答。該軟件現在大部分已被放棄,所以論壇中只有少數活躍的人。

下面是摘錄自var_dump($bbrecs)

array(14227) { 
    [0]=> 
    array(5) { 
     ["id"]=> 
     string(6) "188426" 
     ["username"]=> 
     string(15) "mykindawife" 
     ["act"]=> 
     string(1) "F" 
     ["ref_username"]=> 
     string(8) "polrave" 
     ["act_date"]=> 
     string(10) "1386057016" 
    } 
    [1]=> 
    array(5) { 
     ["id"]=> 
     string(6) "188425" 
     ["username"]=> 
     string(8) "verner" 
     ["act"]=> 
     string(1) "H" 
     ["ref_username"]=> 
     string(6) "Ybang" 
     ["act_date"]=> 
     string(10) "1386049839" 
    } 
... 
+0

你有兩個'BUDDY_BAN_TABLE'表嗎?包含數據的舊版本和包含新列名稱的新版本,但沒有數據? – toxalot

+0

我懂了!謝謝你的幫助。在我運行代碼之前,我將這些列重命名爲userid和ref_userid。當我在桌面上仍然有舊的標題之前運行它。這次它工作了!!!!!謝謝你,你的問題讓我想到了答案。 – user3335981

+0

這就是我前往的地方。只是不確定是否應該更改表格列或更改'BUDDY_BAN_TABLE'的值。 – toxalot

回答

-1

使用MySQL API

$res = mysql_query("SELECT * FROM $table"); 
while($row = mysql_fetch_assoc($res)) { 
    $logon_ts = adConvert($row['lastlogh']); 
    mysql_query("UPDATE $table SET lastlogon = '$logon_ts' WHERE tag='$row[tag]'"); 
} 
+0

這是OP的問題的答案? – toxalot

+0

我想知道同樣的事情。 – user3335981

1

我改名爲列,用戶名和ref_userid之前我跑的代碼。當我在桌面上仍然有舊的標題之前運行它。這次它工作了!!!!!