Как получить одну строку из 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);
}
}
Пожалуйста веди меня...
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);
Чтобы получить одну строку в Oracle, добавьте в предложение where следующее условие:
ROWNUM = 1
К сожалению, не смог понять остальную часть вашего кода, не понял, почему "если", если у вас уже есть такое же условие в предложении where вашего обновления.
Оракул, эквивалентный mysql_fetch_assoc, равен oci_fetch_assoc :)
$parsed = ociparse($conn, $sql);
while ($row = oci_fetch_assoc($parsed))
{
// your logic here
}