mysql数据库已经连接好,现在想要在oracle数据库里面抓取数据,然后写入mysql数据里面...请问如何操作
自己写的,但是无法写入mysql里面... <?php
require('conn.php'); //查询
$stmt = OCIParse($conn,"SELECT FID,FBH,FMC,FDJ,FGG,FZL,FTJ FROM T_CPZL");
OCIDefineByName($stmt,"FID",&$FID);
OCIDefineByName($stmt,"FBH",&$FBH);
OCIDefineByName($stmt,"FMC",&$FMC);
OCIDefineByName($stmt,"FDJ",&$FDJ);
OCIDefineByName($stmt,"FGG",&$FGG);
OCIDefineByName($stmt,"FZL",&$FZL);
OCIDefineByName($stmt,"FTJ",&$FTJ);
OCIExecute($stmt); $sql="insert into jos_vm_product(fid,product_sku,product_name,product_url,product_length,product_weight,product_width) values ($FID,$FBH,$FMC,$FDJ,$FGG,$FZL,$FTJ)";//写入数据的sql语句
自己写的,但是无法写入mysql里面... <?php
require('conn.php'); //查询
$stmt = OCIParse($conn,"SELECT FID,FBH,FMC,FDJ,FGG,FZL,FTJ FROM T_CPZL");
OCIDefineByName($stmt,"FID",&$FID);
OCIDefineByName($stmt,"FBH",&$FBH);
OCIDefineByName($stmt,"FMC",&$FMC);
OCIDefineByName($stmt,"FDJ",&$FDJ);
OCIDefineByName($stmt,"FGG",&$FGG);
OCIDefineByName($stmt,"FZL",&$FZL);
OCIDefineByName($stmt,"FTJ",&$FTJ);
OCIExecute($stmt); $sql="insert into jos_vm_product(fid,product_sku,product_name,product_url,product_length,product_weight,product_width) values ($FID,$FBH,$FMC,$FDJ,$FGG,$FZL,$FTJ)";//写入数据的sql语句
2.修改tnsnames.ora.txt文件,如下:
ot =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.129)(PORT = 1521)) //修改这个文件HOST = 10.1.1.129
(SERVER = DEDICATED)
(SERVICE_NAME = test_db) //加上数据库名
)
)
3.$db=oci_connect('username','passwd','database'); //ot为"tnsnames.ora.txt"文件里的变量
$sql="select * from table";
$stmt=oci_parse($db,$sql);
oci_execute ($stmt);
<?php
require('conn.php'); //查询
$stmt = OCIParse($conn,"SELECT FID,FBH,FMC,FDJ,FGG,FZL,FTJ FROM T_CPZL");
OCIDefineByName($stmt,"FID",&$FID);
OCIDefineByName($stmt,"FBH",&$FBH);
OCIDefineByName($stmt,"FMC",&$FMC);
OCIDefineByName($stmt,"FDJ",&$FDJ);
OCIDefineByName($stmt,"FGG",&$FGG);
OCIDefineByName($stmt,"FZL",&$FZL);
OCIDefineByName($stmt,"FTJ",&$FTJ);
OCIExecute($stmt);
while (OCIFetch($stmt)) {
echo "FID:".$FID."\n";
echo "FBH:".$FBH."\n";
echo "FMC:".$FMC."\n";
echo "FDJ:".$FDJ."\n";
echo "FGG:".$FGG."\n";
echo "FZL:".$FZL."\n";
echo "FTJ:".$FTJ."\n";
}
OCIFreeStatement($stmt);
OCILogoff($conn);
$sql="insert into jos_vm_product(fid,product_sku,product_name,product_url,product_length,product_weight,product_width) values ('$FID','$FBH','$FMC','$FDJ','$FGG','$FZL','$FTJ')";//写入数据
?>
先解决这个问题再来处理mysql数据存入的事情
$stmt = OCIParse($conn,"SELECT FID,FBH,FMC,FDJ,FGG,FZL,FTJ FROM T_CPZL");
OCIDefineByName($stmt,"FID",&$FID);
OCIDefineByName($stmt,"FBH",&$FBH);
OCIDefineByName($stmt,"FMC",&$FMC);
OCIDefineByName($stmt,"FDJ",&$FDJ);
OCIDefineByName($stmt,"FGG",&$FGG);
OCIDefineByName($stmt,"FZL",&$FZL);
OCIDefineByName($stmt,"FTJ",&$FTJ);
OCIExecute($stmt);
while (OCIFetch($stmt)) {
echo "FID:".$FID."\n";
echo "FBH:".$FBH."\n";
echo "FMC:".$FMC."\n";
echo "FDJ:".$FDJ."\n";
echo "FGG:".$FGG."\n";
echo "FZL:".$FZL."\n";
echo "FTJ:".$FTJ."\n";
}
OCIFreeStatement($stmt);
OCILogoff($conn);
这里可以显示出来 但是把它写入mysql就不行了~
写入表,显示空白....但是有记录
就是那几个字段的数据为空说明是可以insert的
但就是无法把oracle的数据写入
字段如果不是数字,要加引号,如果不清楚,就全加上,呵呵.
php可以连接mysql我上面的代码执行后
在mysql数据库里,如果定义个字段为auto_increment的话,会显示有记录。
但是那几个读取了oracle的数据再写入mysql的字段却什么都没...
`product_width`) values ('$FID','$FBH','$FMC','$FDJ','$FGG','$FZL','$FTJ')";//写入数据
echo $sql
value那里没有输出
FID:1181.0001 FBH:6 FMC:6 FDJ:6 FGG:1030*2540*1550 FZL:6 FTJ:6 FID: FBH: FMC: FDJ: FGG: FZL: FTJ: FID: FBH: FMC: FDJ: FGG: FZL: FTJ: FID: FBH: FMC: FDJ: FGG: FZL: FTJ: FID: FBH: FMC: FDJ: FGG: FZL: FTJ: insert into jos_vm_product(`fid`,`product_sku`,`product_name`,`product_url`,`product_length`,`product_weight`, `product_width`) values ('','','','','','','')系统更新
没关系,你做个实验。读取下mysql表里的内容:select * from jos_vm_product如果表里面有内容,但是读不出来,就说明你的连接有问题。
oci_define_by_name($stmt, "ENAME", $ename);oci_execute($stmt);while (oci_fetch($stmt)) {
echo "empno:" . $empno . "\n";
echo "ename:" . $ename . "\n";
}oci_free_statement($stmt);
oci_close($conn);
.......$varn = $ftj;$sql = insert .....另外,不知道你的FID是不是自增长的?如果是的话,在insert语句中把FID这项去掉试试
$sql="insert into jos_vm_product(fid,product_sku,product_name,product_url,product_length,product_weight,product_width) values ('$var1','$FBH','$FMC','$FDJ','$FGG','$FZL','$FTJ')";//写入数据
echo $sql;
如果我将var1=1的话 可以写入mysql
但是就无法将oracle获取的$FBH等等 写入mysql
<?php//连接mysql数据库
$database='test';
$username='root';
$passwd='test123456';
$server='192.168.50.2';
//连接oracle数据库
$conn = OCILogon("test", "test123456", '192.168.50.2:1521/HLDB');
?>
1.php
<?php
require('conn.php'); //查询
$stmt = OCIParse($conn,"SELECT FID,FBH,FMC,FDJ,FGG,FZL,FTJ FROM T_CPZL");
OCIDefineByName($stmt,"FID",&$FID);
OCIDefineByName($stmt,"FBH",&$FBH);
OCIDefineByName($stmt,"FMC",&$FMC);
OCIDefineByName($stmt,"FDJ",&$FDJ);
OCIDefineByName($stmt,"FGG",&$FGG);
OCIDefineByName($stmt,"FZL",&$FZL);
OCIDefineByName($stmt,"FTJ",&$FTJ); OCIExecute($stmt);
while (OCIFetch($stmt)) {
echo "FID:".$FID."\n";
echo "FBH:".$FBH."\n";
echo "FMC:".$FMC."\n";
echo "FDJ:".$FDJ."\n";
echo "FGG:".$FGG."\n";
echo "FZL:".$FZL."\n";
echo "FTJ:".$FTJ."\n";
}
OCIFreeStatement($stmt);
OCILogoff($conn);
$sql="insert into jos_vm_product(fid,product_sku,product_name,product_url,product_length,product_weight,product_width) values ('$var1','$FBH','$FMC','$FDJ','$FGG','$FZL','$FTJ')";//写入数据
echo $sql;
//检查变量值
echo "系统更新" . "<p>";
$link=mysql_connect($server,$username,$passwd); //建立连接 if(!$link)
{
die( "数据库连接失败!" ); //如果连接失败就终止程序并提示错误
}
else
{
mysql_select_db($database,$link); //选择要操作的数据库
mysql_query($sql,$link); //执行sql语句
mysql_close($link); //关闭数据库
}
?>
从这上面的输出信息看,这里有输出了四次FID等信息,但是只有第一次有值,我想问一下,Orcal库里的数据有几条啊?都是有值的吗?
我不了解OCIParse 的用法,不过,感觉你这里的使用好象有点不对,你是不是应该把这个insert语句放到循环里啊。
OCIEXEcute($stmt);
相当于mysql中的:
mysql_query($stmt);
问题解决了
是OCIDefineByName那里重复了
还有就是 我的sql insert应该放在循环里......呼呼 感谢大家 ...
$stmt = @OCIParse($conn,$sql);
@OCIExecute($stmt,OCI_DEFAULT);
@OCIFetchInto($stmt,&$rows);
echo "<br>Content is:\"".$rows[0]."\"";