有限知識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 */
?>
的問題是,我更新到該軟件的最新版本,它現在要求到具有userid
和ref_userid
列而不是舊版本具有的username
和ref_username
列的xxx_buddy_ban_list
表。
我認爲這代碼應該由它包含標題爲username
和id
在我的網站上每個成員的列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"
}
...
你有兩個'BUDDY_BAN_TABLE'表嗎?包含數據的舊版本和包含新列名稱的新版本,但沒有數據? – toxalot
我懂了!謝謝你的幫助。在我運行代碼之前,我將這些列重命名爲userid和ref_userid。當我在桌面上仍然有舊的標題之前運行它。這次它工作了!!!!!謝謝你,你的問題讓我想到了答案。 – user3335981
這就是我前往的地方。只是不確定是否應該更改表格列或更改'BUDDY_BAN_TABLE'的值。 – toxalot