3

我想知道如何在 PHP 中从 Oracle 获取单行?

检查我的脚本-:我想从ITEM_INFO表中获取单行并将该值与变量$sku$code进行比较...我应用的逻辑适用于 Mysql 但不适用于 Oracle...

每次 $sku & $code 包含差异。值,所以我只需要将它们与 ITEM_INFO 表进行比较,如果匹配,则更新相同的标志...

$query_fetch = "SELECT ITEM_NAME,SITE_CODE FROM app.ITEM_INFO WHERE ITEM_FLAG = 'N'";
$stmt = oci_parse($conn,$query_fetch);
oci_execute($stmt);
while(($row = oci_fetch_array($stmt, OCI_BOTH))) 
{   
    $ITEM_NAME = ($row["ITEM_NAME"]);                       
    $SITE_CODE = ($row["SITE_CODE"]);   

    if(($ITEM_NAME === $sku) && ($SITE_CODE === $code))
    {   
              $query_ora_update = "UPDATE app.ITEM_INFO SET ITEM_FLAG= 'Y', LAST_UPDATE_DATE = sysdate WHERE ITEM_NAME = '$sku' AND SITE_CODE = '$code' AND ITEM_FLAG = 'N' ";
                                            $parse_result = oci_parse($conn,$query_ora_update);
    $result = oci_execute($parse_result);
    oci_commit($conn);
    oci_close($conn);
    }
 }

请指导我...

4

3 回答 3

2

基本上,您只需要删除while循环。

这是应用该更改的代码的重写(+您使用了太多括号,降低了代码的可读性+您应该使用 SQL 绑定来避免注入):

$query_ora_update = "UPDATE app.ITEM_INFO SET ITEM_FLAG= 'Y', LAST_UPDATE_DATE = sysdate WHERE ITEM_FLAG = 'N'";
$parse_result = oci_parse($conn, $query_ora_update);
$result = oci_execute($parse_result);

oci_commit($conn);
oci_close($conn);
于 2012-04-19T12:12:41.060 回答
2

要在 Oracle 中获取单行,请在 where 子句中添加以下条件:

ROWNUM = 1

不幸的是,无法理解您的其余代码,如果您在更新的 where 子句中已经具有相同的条件,则无法理解为什么“ifs”。

于 2012-04-19T12:33:28.977 回答
1

相当于 mysql_fetch_assoc 的 Oracle 是oci_fetch_assoc :)

$parsed = ociparse($conn, $sql);
while ($row = oci_fetch_assoc($parsed))
{
    // your logic here
}
于 2012-04-19T13:44:25.183 回答