Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz trisztan94 #14275 üzenetére

    "tehát ha a 2. találat id-jére szeretnék hivatkozni akkor
    $result[1][0];
    eddig gondolom világos.."

    Világos, de a legnagyobb hülyeség integer tömbindexekkel hivatkozni a mezőidre, amikor tök egyszerűen megkapod asszociatív tömbként is a fetch_array()-vel, de akkor már használd a fetch_assoc()-ot, mivel tök felesleges, hogy asszociatív és numerikus tömb is legyen kutyulva...

    szóval akkor helyesen $result[1]['shirt_image_id'], ha már...
    Persze nyilván így az éles kódban nem fogsz hivatkozni rá, mivel a $result tömbön szépen végigmész egy foreach-csel/while-lal/for ciklussal.

    Egyébként meg továbbra sem szégyen, inkább érdem olvasni a dokumentációt...
    http://www.php.net/manual/en/mysqli-result.fetch-all.php
    azonban itt is van a figyelmeztetés:
    "As mysqli_fetch_all() returns all the rows as an array in a single step, it may consume more memory than some similar functions such as mysqli_fetch_array(), which only returns one row at a time from the result set. Further, if you need to iterate over the result set, you will need a looping construct that will further impact performance. For these reasons mysqli_fetch_all() should only be used in those situations where the fetched result set will be sent to another layer for processing."

    A fetch_assoc-nál meg ott van a példa is a doksiban az objektumorientált kódra:

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }

    $query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

    if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
    printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

    /* free result set */
    $result->free();
    }

    /* close connection */
    $mysqli->close();

    Szóval nem értem, mi a gond:
    a saját kódodban kigyűjtheted az eredményeidet egy másik tömbbe is, ha nagyon akarod:

    $myResults = array();
    .....................
    while ($row = $result->fetch_assoc()) {
    $myResults[] = $row;

    // de itt babrálhatsz az eredményeiddel így:
    echo $row['shirt_image_id'] . ': '.$row['description'];
    }
    ....................

    itt felhasználhatod a $myResults tömbödet, amire akarod...
    Ha ezt pl. json_encode-olni akarod, akkor nyilvánvalóan olyan módon gyűjtsd ki ezeket az adatokat a $myResults tömbbe, hogy az szűrve legyen, és csak azt a mezőt és olyan módon add vissza a kliensoldalnak, ahogy az elfogadható (pl. ha nem akarod egy az egyben a mezőneveidet visszaadni, akkor nevezd el máshogy, vagy tudom is én, mi az elvárás nálad).
    :)

    Szerk.:
    Az pedig gázos, ha így van tagekkel ellátva a bejegyzésed, hogy vesszővel elválasztva beokádod egyetlen mezőbe:
    [categories] => {utazás,párizs,trisztán}
    Pfuj, broáf! :DDD

Új hozzászólás Aktív témák

Hirdetés