كيفية الحصول على آخر قيمة للتكرار فقط أثناء جلب البيانات من قاعدة البيانات ، جربت الحصول على قيم بتنسيق JSON

وهنا ما حاولت. لقد حاولت جلب البيانات من DB.It يظهر البيانات من بداية التكرار إلى نهاية التكرار.أنا بحاجة فقط قيمة التكرار الماضي.أنا مستجد كامل. سيكون موضع تقدير مساعدة

   <?php
        $servername = "localhost";
        $username = "root";
        $password = "";
        $dbname = "api_db";
        $conn = new mysqli($servername, $username, $password, $dbname);
        $myarray=array();
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        $sql = "SELECT id, name, description FROM products";
        $result = $conn->query($sql);

        if ($result->num_rows > 0) {
            while($row = $result->fetch_array(MYSQL_ASSOC)) {
                $myarray[]= $row; 


               //echo "
";
               //print_r($myarray);

                echo "
";echo json_encode($myarray);
               //echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Description :" . $row["description"]. "
"; } } else { echo "0 results"; } $conn->close(); ?>


0
وأضاف المؤلف Romeo Sierra, مصدر

3 إجابة

أخيرًا ، حصلت على وجهة نظرك أن ما تريده-

يجب أن تحصل على كل السجلات في متغير واحد. يمكنك تشفيرها في آخر

لذلك مثل أدناه: -

1.Intilialize صفيف خارج الحلقة

2.Assign كل سجل إلى مجموعة داخل الحلقة

3.Encode مصفوفة خارج الحلقة

هل مثل أدناه: -

<?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "api_db";
    $conn = new mysqli($servername, $username, $password, $dbname);
    $myarray=array();
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    $sql = "SELECT id, name, description FROM products";
    $result = $conn->query($sql);
    $myarray = []; //Initialize array outside of the loop
    if ($result->num_rows > 0) {
        while($row = $result->fetch_array(MYSQL_ASSOC)) {
            $myarray[] = $row; //Assign each record to the array inside the loop
        }
    } else {
        echo "0 results";
    }
    $conn->close();
    echo json_encode($myarray);//Encode array outside the loop
?>
0
وأضاف
عملت شكرا جزيلا لك.
وأضاف المؤلف Subash Kumar KR, مصدر
SubashKumarKR مسرور لمساعدتك :) :)
وأضاف المؤلف Alive to Die, مصدر

While it looks like a duplicate to me, I would suggest the following, assuming that you are not intending to sort the dataset from the DBMS.

استخدم mysqli_data_seek (mysqli_result $ result، int $ offset) لنقل المؤشر الذي يجتاز مجموعة البيانات. لذلك بالنسبة لقضيتك سيكون

$nor = mysqli_num_rows($result); //Number of rows
mysqli_data_seek($resutl, ($nor - 1)); //Indices are based on 0

يحتوي $ ولا بشكل أساسي على إجمالي عدد السجلات. لذلك ، سيكون الرقم القياسي للسجل الأخير على الإطلاق $ nor-1 .

Of course if you are sorting the dataset in your query using ORDER BY, then the best way to do this is appending ORDER BY id DESC LIMIT 1.

0
وأضاف

قم بتغيير استعلام SQL الخاص بك

SELECT id, name, description FROM products order by id desc limit 1

هذا سوف يعمل من أجلك.

0
وأضاف
أعتقد أنني مشوشة يا رفاق مع سؤالي.بإضافة هذا الرمز حصلت فقط على القيمة الأخيرة من رمز DB.My الافتراضي يتكرر كل البيانات من DB.but it itateates القيمة واحدة تلو الأخرى وقيمة التكرار الماضي لديه كل البيانات. هذا ما أحتاجه بالضبط!
وأضاف المؤلف Subash Kumar KR, مصدر
ثم يمكنك تحديث سؤالك !!
وأضاف المؤلف Sambhaji Katrajkar, مصدر