Pregunta

I'm having a bit of an issue with what is normally a simple foreach loop through a query array. I am trying to target individual field values from a row, but its only returning the first letter of each. New to OCI so any help would be appreciated.

$custcart = oci_parse($conn,"SELECT * FROM A113222813_CARTLINE WHERE CUST_ID=  
:cust_id");
oci_bind_by_name($custcart, ":cust_id", $_SESSION["CUST_ID"]);

if (!$custcart) {
    echo "There was an error. Please wait wwhile we redirect you.";
    $url ="login.php";
    $time_out = 5;
    header("refresh: $time_out; url=$url");
}

oci_execute($custcart);
include 'includes/header.php';

while ($row = oci_fetch_array($custcart, OCI_ASSOC)) {
    foreach ($row as $item) {
        echo $item['CART_NAME'];

    }
}
¿Fue útil?

Solución

The while is looping over all returned rows. You are then foreach ing across that row and accessing the columns in the row (don't do that). You just want the while and access CART_NAME in $row:

while ($row = oci_fetch_array($custcart, OCI_ASSOC)) {
    echo $row['CART_NAME'];
}

If you want to store the rows in an array to use more than once in the script, then:

while ($row[] = oci_fetch_array($custcart, OCI_ASSOC)) { }

//now or later

foreach ($row as $item) {
    echo $item['CART_NAME'];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top