2010-09-12 170 views
-2

im從mysql 4.x升級到5版本。mysql 4.x - > 5.x升級問題

在我的PHP源碼中,我有以下源碼在MySQL 4.x版本上運行良好。

但如果在MySQL 5.x版本,它不工作。

我認爲跟隨我的PHP源代碼的一部分,導致一些問題的一些嫌疑犯。

如果有人幫我很多appreate

<? 
    include('_connect_site_01.php'); 
    $DB = new MySQL; 
    $DB->DBconnect(); 

    if(!$_GET[partner]) $_GET[partner] = "root"; 
    if(!$_GET[spcode]) $_GET[spcode] = "health"; 
    $date = date("Y-m-d"); 
    $Query = "SELECT date FROM partner_count WHERE partner='$_GET[partner]' AND date='$date'"; 
    $DB->ExecSql($Query); $row = $DB->Fetch(); 

    if($row[date] == NULL) 
    { 
     $Insert = "INSERT INTO partner_count (id,partner, date, hit) VALUES('','$_GET[partner]','$date','1')"; 
     $DB->ExecSql($Insert); 
    } 
    else 
    { 
     $Update = "UPDATE partner_count SET hit= hit+1 WHERE partner='$_GET[partner]'"; 
     $DB->ExecSql($Update); 
    } 
    ?> 
+1

「它不工作」是什麼意思?什麼實際上不工作? – zerkms 2010-09-12 06:53:27

+2

也 - 打開'error_reporting(E_ALL);'並且讓你的腳本沒有任何警告和通知。 – zerkms 2010-09-12 06:54:27

+0

即時通訊對不起,我沒有解釋我的嚴重問題是什麼!我的問題是即時通訊使用韓國語言..但升級後的MySQL 5.x版本。字符被打破,所以它看起來像'????'。我想我聽說MySQL 5.x中的日期函數與mysql 4.x相比發生了變化。但不完全知道 – paul 2010-09-12 08:01:47

回答

0

你必須在你之後設置colation和字符集連接

 
SET NAMES koi8r; 
SET CHARACTER SET koi8r; 
SET collation_connection = koi8r_general_ci; 

打完$ DB->數據庫連接();你應該運行:

 
$DB->ExecSql("SET NAMES koi8r;"); 
$DB->ExecSql("SET CHARACTER SET koi8r;"); 
$DB->ExecSql("SET collation_connection = koi8r_general_ci;"); 
+0

你的回答不正確,我補充了更好的答案。 – zerkms 2010-09-12 08:39:24

+0

這段代碼非常冗餘。實際上只有第一個查詢就足夠了 – 2010-09-12 08:51:14

+0

@Col。彈片:線條越多 - 代碼越好。 – zerkms 2010-09-12 09:48:54

0

@ cichy的答案是不明確的。對於mysql> = 5.0,你需要應該使用mysql_set_charset()而不是他說的查詢。

另外,當您遷移到新的mysql時,數據可能會被破壞。您尚未描述如何執行遷移,因此根本問題可能比僅適當使用mysql_set_charset()複雜得多。

+0

這隻適用於OP使用mysql _ *()函數族(他沒有說)。 – 2010-09-12 12:35:04

+0

@ÁlvaroG. Vicario:那麼他應該在他的客戶端庫中使用與'mysql_set_charset()'完全同義的函數。其他實現在思想上是錯誤的,並且可能是脆弱的。 – zerkms 2010-09-12 12:41:57