Php 要从Oracle导入到MySQL的查询返回空对象

Php 要从Oracle导入到MySQL的查询返回空对象,php,mysql,oracle,Php,Mysql,Oracle,我使用php将数据从oracle数据库插入mysql数据库,而不是插入和更新,但我有一个奇怪的行为。oracle表有20851条记录 问题是,在记录x中,对mysql的查询返回一个空的结果对象,但对mysql执行的相同查询返回了包含数据的对象 通过以下代码,我可以将数据从oracle插入并更新到mysql $stid = oci_parse($conn, 'SELECT * FROM B_PROGRAMA_EVALUACION_BIPS'); //oracle db oci_execute($s

我使用php将数据从oracle数据库插入mysql数据库,而不是插入和更新,但我有一个奇怪的行为。oracle表有20851条记录

问题是,在记录x中,对mysql的查询返回一个空的结果对象,但对mysql执行的相同查询返回了包含数据的对象

通过以下代码,我可以将数据从oracle插入并更新到mysql

$stid = oci_parse($conn, 'SELECT * FROM B_PROGRAMA_EVALUACION_BIPS'); //oracle db
oci_execute($stid); //oracle db

while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {

$sql = "select ID_ITEM, ID_PROGRAMA from B_PROGRAMA_EVALUACION_BIPS WHERE ID_ITEM=".$row['ID_ITEM']." AND ID_PROGRAMA=".$row['ID_PROGRAMA'];

$result = $db->query($sql);
$rows = mysqli_fetch_array($result);

if ($rows['ID_ITEM'] == $row['ID_ITEM'] && $rows['ID_PROGRAMA'] == $row['ID_PROGRAMA'])      {
    $sql = "UPDATE B_PROGRAMA_EVALUACION_BIPS SET ID_PROGRAMA='".$row['ID_PROGRAMA'] . "', ANO='" . $row['ANO'] . "', COPIA='" . $row['COPIA'] . "', TIPO_PROGRAMA_ER='"
            . $row['TIPO_PROGRAMA_ER'] . "', EVALUACION='".mysqli_real_escape_string($db, $row['EVALUACION'])."', ID_CARACTERICACION='".$row['ID_CARACTERICACION']."', NOTA='".$row['NOTA']."' WHERE ID_ITEM=".$row['ID_ITEM'];


} else {
    $sql = "INSERT INTO B_PROGRAMA_EVALUACION_BIPS VALUES('".$row['ID_PROGRAMA'] . "','" . $row['ANO'] . "','" . $row['COPIA'] . "','"
            . $row['ID_ITEM'] . "','".$row['ID_CARACTERICACION']."','".mysqli_real_escape_string($db, $row['EVALUACION'])."','".$row['TIPO_PROGRAMA_ER']."','".$row['NOTA']."')";
}

$result = $db->query($sql); 

if ($result != 1) {
    $resultado['B_PROGRAMA_EVALUACION_BIPS'] = $resultado['B_PROGRAMA_EVALUACION_BIPS'] + 1;
}
}

如果我在第二次执行查询时删除这一行,那么第一次查询工作得很好

$result = $db->query($sql);

应在以下值周围添加单引号:

$sql = "select ID_ITEM, ID_PROGRAMA from B_PROGRAMA_EVALUACION_BIPS WHERE ID_ITEM='".$row['ID_ITEM']."' AND ID_PROGRAMA='".$row['ID_PROGRAMA']"'";

谢谢你的回答。我添加了单引号,但错误仍然存在。第二个查询的$result=$db->query($sql)行的插入或更新,第一个查询工作正常。