اذهب إلى المحتوى
  • 0

[php] Trying to get property of non-object

السؤال

نشر

سلام عليكم

أحاول تحديث قاعدة البيانات ببيانات مصفوفة كالتالي

$sizes = array(json_decode($_POST["sizeValues"]));
       // $id = $_POST["id"];

    print_r($sizes);

        foreach ($sizes as  $size) {
            $name = intval($size->item_name);
            $id = intval($size->item_id);

            $sql = "UPDATE patron_sizes SET size_count='$name',  WHERE id=$id";
            $result = $conn->query($sql);
            if ($result) {
                echo 'done';
            }

        }

أواجه الخطأ التالي


Notice:  Trying to get property 'item_name' of non-object in <b>C:\xampp\htdocs\atms\requests\edit_patron.php</b> on line 35

Notice:  Trying to get property 'item_id' of non-object in <b>C:\xampp\htdocs\atms\requests\edit_patron.php</b> on line 36

المصفوفة تطبع بالشكل التالي

Array
(
    [0] => Array
        (
            [0] => stdClass Object
                (
                    [item_id] => 2758
                    [item_name] => 5000
                )

            [1] => stdClass Object
                (
                    [item_id] => 2759
                    [item_name] => 4000
                )

            [2] => stdClass Object
                (
                    [item_id] => 2760
                    [item_name] => 6000
                )

            [3] => stdClass Object
                (
                    [item_id] => 2761
                    [item_name] => 0
                )

            [4] => stdClass Object
                (
                    [item_id] => 2762
                    [item_name] => 2
                )

            [5] => stdClass Object
                (
                    [item_id] => 2763
                    [item_name] => 2000
                )

            [6] => stdClass Object
                (
                    [item_id] => 2764
                    [item_name] => 2000
                )

            [7] => stdClass Object
                (
                    [item_id] => 2765
                    [item_name] => 2000
                )

            [8] => stdClass Object
                (
                    [item_id] => 2766
                    [item_name] => 2000
                )

            [9] => stdClass Object
                (
                    [item_id] => 2767
                    [item_name] => 2000
                )

            [10] => stdClass Object
                (
                    [item_id] => 2768
                    [item_name] => 10000
                )

            [11] => stdClass Object
                (
                    [item_id] => 2769
                    [item_name] => 5000
                )

            [12] => stdClass Object
                (
                    [item_id] => 2770
                    [item_name] => 2500
                )

            [13] => stdClass Object
                (
                    [item_id] => 2771
                    [item_name] => 2500
                )

            [14] => stdClass Object
                (
                    [item_id] => 2772
                    [item_name] => 5000
                )

        )

)

ما الحل فضلا ؟

Recommended Posts

  • 1
نشر

تحدث المشكلة في الغالب بسبب ان المصفوفة sizes تحتوي على مصفوفة اخرى متداخلة nested فهي مصفوفة multi dimensional. وللمرور على عناصر مصفوفة مثل التي لديك اظن انك تحتاج المرور على الكائنات بداخل اول مصفوفة. فيكون:

foreach ($sizes[0] as  $size) {
.. الباقي

أيضا قد تحتاج طباعة size من داخل حلقة foreach لفهم كيفية المرور على عناصره.

  • 0
نشر

أحسنت أخي الفاضل

نجحت بالفعل و هذا الكود بعد تنقيحة لمن أراد الاستفادة لاحقا و أتشرف برأي حضرتك لو ممكن يتكتب بشكل أفضل 

$sizes = array(json_decode($_POST["sizeValues"]));

foreach ($sizes[0] as $key => $size) {
$name = mysqli_real_escape_string($conn,$size->item_name,);
$id = mysqli_real_escape_string($conn,$size->item_id,);

$stmt = $conn->prepare('UPDATE patron_sizes SET size_count=?  WHERE id = ? ')  ;
$stmt->bind_param('ss',$name,$id);

 $result = $stmt->execute();

        }

        if ($result) {
            echo 'done';
        }

        else {
            echo $stmt->error;
        }

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...