如何在PHP中从Oracle获取单行?
我想知道如何在PHP中从Oracle获取单行 检查我的脚本-: 我想从ITEM_INFO表中获取单行,并将该值与变量$sku和$code进行比较。我应用的逻辑在Mysql中工作,但在Oracle中不工作 每次$sku和$code包含不同的值,所以我只需要将它们与ITEM_INFO表进行比较&如果匹配,则更新相同的标志如何在PHP中从Oracle获取单行?,php,oracle,row,fetch,oracle-call-interface,Php,Oracle,Row,Fetch,Oracle Call Interface,我想知道如何在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'"; $stm
$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);
}
}
请引导我…基本上,您只需在执行
循环时删除
下面是应用该更改对代码的重写(+您使用了太多的括号,降低了代码的可读性+您应该使用SQL绑定以避免注入):
要在Oracle中获取单行,请在where子句中添加以下条件:
ROWNUM = 1
不幸的是,我无法理解代码的其余部分,也无法理解为什么在更新的where子句中已经存在相同的条件时会出现“ifs”。与mysql\u fetch\u assoc等价的Oracle是:)
您好,Frosty,我按照您的建议进行了尝试,但代码似乎不是从if()语句执行的…它显示如下-:([0]=>FXQV2[ITEM\u NAME]=>ABC12[1]=>CA[SITE\u code]=>CA)Ok。正如Oswaldo所建议的,代码和sku上的if
条件似乎没有什么用处,因为您的更新query=>编辑了我的答案(+在第一次查询中添加了ROWNUM=1
)好的…但我想检查app.ITEM_INFO表中的所有项目..但我们只是提供rownum=1,所以如何使用它来移动下一行&当它找到条目时,更新查询将工作…所以。。。为什么不只使用约束条件WHERE ITEM_FLAG='N'
?=>更新了answerHi Oswaldo,如果我想在该表中使用相同的项直到下一次匹配,如何使用相同的项&如果它找到该项,将触发代码中给定的更新查询。如果您想更新表项信息中所有记录,这些记录的项项标志='N'&站点项代码=$code&项名称=$sku,您不必通读进行此更新的所有行,下面的sql将为您完成此更新。我仍然无法理解您试图执行的操作:pUPDATE APP.ITEM\u INFO SET ITEM\u FLAG='Y',LAST\u UPDATE\u DATE=sysdate,其中ITEM\u NAME='$sku'和SITE\u code='$code'和ITEM\u FLAG='N'
HI Oswaldo,在ITEM\u INFO表中,没有具有不同SITE\u代码和标记为'N'的项。因此,无论$sku(item_name)和$code(site_code)来自该变量中的我的代码,我都希望将其与item_INFO表匹配&如果匹配,则需要将标志更新为“Y”。所以我需要这样的逻辑,如果$sku&$site\u代码与第一行ITEM\u信息不匹配,它必须与下一行进行同样的检查。。。
ROWNUM = 1
$parsed = ociparse($conn, $sql);
while ($row = oci_fetch_assoc($parsed))
{
// your logic here
}