$query = oci_parse($olink,$strSql);
$oresult=oci_execute($query);
数据库连接成功;
$strSql 在oracle执行能成功;
可在php里执行就是不行,请各位指教,

解决方案 »

  1.   

    code:
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh" lang="zh" dir="ltr">
    <head>
       <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
    <title>mysql 字符编码 </title> 
    </head> 
    <?php
    mysql_query("set names gbk;");/*防止出现乱码*/
    //连接数据库
    $db="localhost";
    $user="root";
    $pwd="123456";
    $dbname="dedev3"; $link=mysql_connect($db,$user,$pwd);
    if(!$link)
    {
    echo "--------------Mysql连接失败---------------<br><br>";
    exit();
    }

    $olink = oci_pconnect('SYSTEM','manager',"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.31)(PORT=1521))(CONNECT_DATA=(SID=dedeo)))");
    if(!$olink)
    {
    echo "--------------Oracle连接失败---------------<br><br>";
    exit();
    } $tbNum=0;
    $tbName="";
    mysql_select_db($dbname);
    $resultDB = mysql_query("show table status from $dbname",$link);
    while($data=mysql_fetch_array($resultDB)) 
    {
    $tbName=$data["Name"];
    /****取表所有行****/
    $sql="select * from $tbName";
    $result=mysql_query($sql);
    $rows=mysql_num_rows($result); /****获取表的第一个字段名****/
    $field=mysql_list_fields($dbname,$tbName,$link); 
    $cols=mysql_num_fields($field); 
    $priKey=mysql_field_name($field,0); //取表的第一个字段[主键/不一定全是] /****重新排序****/
    mysql_free_result($result);
    $sql="select * from $tbName order by $priKey";
    $result=mysql_query($sql); if($rows==0)
    {
    echo "$tbName ----------------- 无记录  跳过 <br>";//.date("Y-m-d H:i:s",time()+8*3600)."<br>";
    }
    else
    {
    echo "$tbName ----------------- 开始数据处理 <br>";//.date("Y-m-d H:i:s",time()+8*3600)."<br>"; /****取第一个字段的最大值****/
    $maxKey = mysql_query("select max(".$priKey.") as maxId from $tbName",$link);
    if($maxKey)
    {
    while($row = mysql_fetch_object($maxKey)) 

    $maxid = $row->maxId;
    }
    for($i=0;$i<$maxid;$i++)
    {
    $j=$i+1;
    $recNum = mysql_query("select * from $tbName where ".$priKey."=$j",$link);
    //echo "select ".$priKey." from $tbName where ".$priKey."=$j<br><br>";
    if($recNum)
    {
    /****echo "无记录向oracle中插入一条空记录";
    根据表字段生成SQL 语句****/
    $strSql="insert into $tbName(";
    for($m=0;$m<$cols-1;$m++)
    {
    $strSql.=mysql_field_name($field,$m+1).",";
    }
    $strSql=substr($strSql,0,strlen($strSql)-1);
    $strSql.=") values("; $isExist=mysql_fetch_array($recNum);
    if($isExist)
    {
    //echo "有记录<br>";
    for($m=0;$m<$cols-1;$m++)
    {
    //echo $isExist[$m]."<br>";
    if(mysql_field_type($field, $m+1)=="int")
    {
    $strSql.=$isExist[$m+1].",";
    //echo mysql_field_type($field, $m)."<br>";
    }
    else
    {
    $strSql.="'".$isExist[$m+1]."'".",";
    }
    }
    $strSql=substr($strSql,0,strlen($strSql)-1);
    $strSql.=")";
    //echo $strSql."<br>";
    }
    else
    { for($m=0;$m<$cols-1;$m++)
    {
    if(mysql_field_type($field, $m+1)=="int")
    {
    $strSql.="0".",";
    }
    else
    {
    $strSql.="' '".",";
    }
    }
    $strSql=substr($strSql,0,strlen($strSql)-1);
    $strSql.=")";
    ////echo $strSql."<br>";
    }
    //echo $strSql."<br>";
    $query = oci_parse($olink,$strSql);
    $oresult=oci_execute($query);
    if($oresult)
    {
    echo "true<br>";
    }
    else
    {
    echo "false<br>";
    }
    }
    else
    {
    echo "提取表$tbName数据时了错<br>";
    }
    }
    }
    } echo "$tbName 结束 ************************ <br><br>";//.date("Y-m-d H:i:s",time()+8*3600)."<br><br>";

    $tbNum+=1;
    /*
    if($tbNum==10)
    {
    exit();
    }
    */
    }
    echo $tbNum;
    //清空内存
    mysql_free_result($result);
    //关闭数据库
    mysql_close();
    ?>