要转动网论坛为PHP型,数据库怎么转?? 若是在win32环境下,可以不要转换,用com调用adodb。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 人家只要转换嘛,可以参考这个:<?php/*** ODBC to mySQL* 徐祖宁 (唠叨)* 2002-04* [email protected]** 初次接触php+mysql的朋友,有很多是ASP的高手。为使尽快上手* 特写此程序,用于将原有的数据库通过ODBC数据源转换到mysql* 其实此类程序有很多,精华区中也有不少。* 本程序的特点在于只需知道数据源名和mysql的库名即可。程序将* 根据数据源中的表自动进行工作。**/set_time_limit(0);$dsn = "tjtz"; // 数据源名$dsn_name = ""; // 数据源用户名$dsn_pass = ""; // 数据源口令$sql = "tjtz"; // mysql库名,通常可用数据源名$sql_host = ""; // mysql服务器名$sql_name = ""; // mysql用户名$sql_pass = ""; // mysql口令$odbc = odbc_connect($dsn,$dsn_name,$dsn_pass);$result = odbc_tables($odbc);$fields = odbc_num_fields($result);if(! function_exists("odbc_fetch_array")) { // 检查函数odbc_fetch_array是否存在,若没有则定义 // 手册上说有这个函数,但4.1.2中肯定没有 // 注意,使用odbc_fetch_into回串的数组只能用下标访问 function odbc_fetch_array(&$result) { $ar = array(); odbc_fetch_into($result,$ar); return $ar; }}// 获取库中的表while($ar[] = odbc_fetch_array($result));// 定义过滤函数function filter($var) { return ($var[3] == "TABLE");}// 筛选出用户表$ar = array_filter($ar,"filter");foreach($ar as $tab) { $tables[] = $tab[2];}// 生成建表文档,若存在则不执行if(! file_exists("$sql.sql")) { // 提取各表的字段信息 $fp = fopen("$sql.sql","w"); foreach($tables as $table) { $result = odbc_do($odbc,"select * from $table"); $str = sprintf("create table %s (",$table); for($i=0;$i<odbc_num_fields($result);$i++) { if(eregi("DOUBLE",odbc_field_type($result,$i+1))) { $s = sprintf("%s%s %s" ,($i>0?", ":"") ,odbc_field_name($result,$i+1) ,odbc_field_type($result,$i+1) ); }else if(eregi("COUNTER",odbc_field_type($result,$i+1))) { $s = sprintf("%s%s TINYINT(%s) AUTO_INCREMENT PRIMARY KEY" ,($i>0?", ":"") ,odbc_field_name($result,$i+1) ,odbc_field_len($result,$i+1) ); }else { $s = sprintf("%s%s %s(%s)" ,($i>0?", ":"") ,odbc_field_name($result,$i+1) ,odbc_field_type($result,$i+1) ,odbc_field_len($result,$i+1) ); } $str .= $s; } $str .= ");\n"; fputs($fp,$str); } fclose($fp); echo "已产生了建表表文件$sql.sql。<br>"; echo "请检查命令是否正确。若不需要重新建表,请将下面的if(1) 改为if(0)<br>"; echo "不要改变表名,要增加字段请放在后面!"; echo "确认后重新运行本程序!"; odbc_close($odbc); exit;}if(1) { // 若不需要重新建表,请将if(1) 改为if(0) echo "开始建表...<br>"; $mysql = mysql_connect(); mysql_drop_db($sql); mysql_create_db($sql); mysql_select_db($sql); $fp = fopen("$sql.sql","r"); $buffer = fread($fp,filesize("$sql.sql")); fclose($fp); $ar = split("\n",$buffer); foreach($ar as $query) { if(trim($query) != "") {// echo "$query<br>"; mysql_query($query,$mysql); } }}// 从建表文件提取表信息信息$info = array();$s = file("$sql.sql");foreach($s as $value) { if(eregi("create +table +([a-z0-9_-]+) *[\(](.+)[\)]",$value,$regs)) { $table = $regs[1]; $info[$table] = array(); $ar = split(",",$regs[2]); foreach($ar as $v) { sscanf($v,"%s %s",$p,$p); if(eregi("double|count|int",$p)) { // 这些类型不需要加'',还有那些? $info[$table][] =""; }else { $info[$table][] ="'"; } } }}$mysql = mysql_connect($sql_host,$sql_name,$sql_pass);mysql_select_db($sql);echo "<br>正在将数据从DSN向mySQL转移...";foreach($info as $key => $ar) { $query = "select * from $key"; // 生成ODBC查询 $result = odbc_do($odbc,$query); $mode = true; while($rs = odbc_fetch_array($result)) { $sql_query = "insert into $key values ("; for($i=0;$i<count($rs);$i++) { if($i > 0) $sql_query .= ","; $sql_query .= "{$ar[$i]}{$rs[$i]}{$ar[$i]}"; } $sql_query .= ")"; mysql_query($sql_query,$mysql); }}odbc_close($odbc);echo "<br>操作结束";?> 我想问个关于Discuz5.5程序的问题 当然,也是PHP的问题 关于循环获取会员关系图(下线及下下线)的问题, php4和php5的差异大吗?? 求纯mysql语句实现 请介绍一些被允许用于商业用途的购物网站源代码。 ?和php之间居然不能空格(还有一个字段的值写不进去) linux 下,你们用什么写php,哪个个软件最顺手? 请问如何把编译过的PHP程序进行反编译?? 如何读取文本文件?(做为新闻系统) 哪位大神知道php如何对文件进行加密与解密的方法? 搜索问题,在线等,有答案就散分 紧急时期,请大家看一下我的作品,喜欢的帮忙投一票!
<?php
/**
* ODBC to mySQL
* 徐祖宁 (唠叨)
* 2002-04
* [email protected]
*
* 初次接触php+mysql的朋友,有很多是ASP的高手。为使尽快上手
* 特写此程序,用于将原有的数据库通过ODBC数据源转换到mysql
* 其实此类程序有很多,精华区中也有不少。
* 本程序的特点在于只需知道数据源名和mysql的库名即可。程序将
* 根据数据源中的表自动进行工作。
*
*/
set_time_limit(0);$dsn = "tjtz"; // 数据源名
$dsn_name = ""; // 数据源用户名
$dsn_pass = ""; // 数据源口令$sql = "tjtz"; // mysql库名,通常可用数据源名
$sql_host = ""; // mysql服务器名
$sql_name = ""; // mysql用户名
$sql_pass = ""; // mysql口令$odbc = odbc_connect($dsn,$dsn_name,$dsn_pass);
$result = odbc_tables($odbc);$fields = odbc_num_fields($result);if(! function_exists("odbc_fetch_array")) {
// 检查函数odbc_fetch_array是否存在,若没有则定义
// 手册上说有这个函数,但4.1.2中肯定没有
// 注意,使用odbc_fetch_into回串的数组只能用下标访问
function odbc_fetch_array(&$result) {
$ar = array();
odbc_fetch_into($result,$ar);
return $ar;
}
}
// 获取库中的表
while($ar[] = odbc_fetch_array($result));
// 定义过滤函数
function filter($var) {
return ($var[3] == "TABLE");
}
// 筛选出用户表
$ar = array_filter($ar,"filter");
foreach($ar as $tab) {
$tables[] = $tab[2];
}
// 生成建表文档,若存在则不执行
if(! file_exists("$sql.sql")) {
// 提取各表的字段信息
$fp = fopen("$sql.sql","w");
foreach($tables as $table) {
$result = odbc_do($odbc,"select * from $table");
$str = sprintf("create table %s (",$table);
for($i=0;$i<odbc_num_fields($result);$i++) {
if(eregi("DOUBLE",odbc_field_type($result,$i+1))) {
$s = sprintf("%s%s %s"
,($i>0?", ":"")
,odbc_field_name($result,$i+1)
,odbc_field_type($result,$i+1)
);
}else if(eregi("COUNTER",odbc_field_type($result,$i+1))) {
$s = sprintf("%s%s TINYINT(%s) AUTO_INCREMENT PRIMARY KEY"
,($i>0?", ":"")
,odbc_field_name($result,$i+1)
,odbc_field_len($result,$i+1)
);
}else {
$s = sprintf("%s%s %s(%s)"
,($i>0?", ":"")
,odbc_field_name($result,$i+1)
,odbc_field_type($result,$i+1)
,odbc_field_len($result,$i+1)
);
}
$str .= $s;
}
$str .= ");\n";
fputs($fp,$str);
}
fclose($fp);
echo "已产生了建表表文件$sql.sql。<br>";
echo "请检查命令是否正确。若不需要重新建表,请将下面的if(1) 改为if(0)<br>";
echo "不要改变表名,要增加字段请放在后面!";
echo "确认后重新运行本程序!";
odbc_close($odbc);
exit;
}if(1) { // 若不需要重新建表,请将if(1) 改为if(0)
echo "开始建表...<br>";
$mysql = mysql_connect();
mysql_drop_db($sql);
mysql_create_db($sql);
mysql_select_db($sql);
$fp = fopen("$sql.sql","r");
$buffer = fread($fp,filesize("$sql.sql"));
fclose($fp);
$ar = split("\n",$buffer);
foreach($ar as $query) {
if(trim($query) != "") {
// echo "$query<br>";
mysql_query($query,$mysql);
}
}
}// 从建表文件提取表信息信息
$info = array();
$s = file("$sql.sql");
foreach($s as $value) {
if(eregi("create +table +([a-z0-9_-]+) *[\(](.+)[\)]",$value,$regs)) {
$table = $regs[1];
$info[$table] = array();
$ar = split(",",$regs[2]);
foreach($ar as $v) {
sscanf($v,"%s %s",$p,$p);
if(eregi("double|count|int",$p)) { // 这些类型不需要加'',还有那些?
$info[$table][] ="";
}else {
$info[$table][] ="'";
}
}
}
}$mysql = mysql_connect($sql_host,$sql_name,$sql_pass);
mysql_select_db($sql);echo "<br>正在将数据从DSN向mySQL转移...";
foreach($info as $key => $ar) {
$query = "select * from $key"; // 生成ODBC查询
$result = odbc_do($odbc,$query);
$mode = true;
while($rs = odbc_fetch_array($result)) {
$sql_query = "insert into $key values (";
for($i=0;$i<count($rs);$i++) {
if($i > 0) $sql_query .= ",";
$sql_query .= "{$ar[$i]}{$rs[$i]}{$ar[$i]}";
}
$sql_query .= ")";
mysql_query($sql_query,$mysql);
}
}odbc_close($odbc);
echo "<br>操作结束";
?>