2010-09-12 133 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