Как получить одну строку из Oracle в PHP?


Я хочу знать, как получить одну строку из Oracle в PHP?

Проверьте мой сценарий-: Я хочу извлечь одну строку из таблицы ITEM_INFO и сравнить эти значения с переменными $sku & $ код...Я применил логику, которая работает в Mysql, но не работает в Oracle...

Каждый раз, когда $sku и $код содержат различия. значения, поэтому мне просто нужно сравнить их с таблицей 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);
    }
 }

Пожалуйста веди меня...

Author: Prat, 2012-04-19

3 answers

В принципе, вам просто нужно удалить цикл 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);
 2
Author: Frosty Z, 2012-04-19 14:17:52

Чтобы получить одну строку в Oracle, добавьте в предложение where следующее условие:

ROWNUM = 1

К сожалению, не смог понять остальную часть вашего кода, не понял, почему "если", если у вас уже есть такое же условие в предложении where вашего обновления.

 2
Author: Oswaldo Acauan, 2012-04-19 13:43:35

Оракул, эквивалентный mysql_fetch_assoc, равен oci_fetch_assoc :)

$parsed = ociparse($conn, $sql);
while ($row = oci_fetch_assoc($parsed))
{
    // your logic here
}
 1
Author: winkbrace, 2012-04-19 13:44:25