有關PHP物件跟變數的問題

Yueh-tsung YU
各位大大好,我現在有三個SQL語法 第一段SQL語法用變數$Midprint_r出來會有我自己設定的m_id,c_id兩個欄位
然後我想要把c_id變數塞到第二段的c_id裡面,然後把m_id塞到第三段的SQL語法裡面的m_id和把第二段預計用$SN變數print_r出SN欄位塞到第三段的(@SN:=@SN+1)這裡
然後第三段語法就可以用迴圈去新增,然後我把WHERE id_category=c_id改成id_category='$Mid->c_id';會報Trying to get property of non-object錯誤
然後WHERE id_category=c_id如果改成id_category='".$Mid['c_id']."'會報 Undefined index: c_id錯誤,小弟嘗試過多種方法都沒有成功,卡了很久
各位高手們請救救小弟,給小弟指點迷津,感激不盡!!!!
        foreach ($manufacturer as $brand) {
            //第一段SQL
            $sql="SELECT id_manufacturer AS m_id,id_category AS c_id FROM ps_manufacturer 
            LEFT JOIN ( SELECT `name`,id_category FROM ps_category_lang WHERE id_category IN 
            (SELECT id_category FROM ps_category WHERE id_parent = 27)
            AND id_lang = 1 ) AS pcl ON pcl.`name` = ps_manufacturer.`name`
            WHERE pcl.`name` IS NOT NULL;";

            $Mid=DB::select($sql);
            print_r($Mid);
            // exit();
            //第二段SQL
            $sql="SELECT max(position) AS SN FROM ps_category_product WHERE id_category=c_id;";

            $SN=DB::select($sql);
            print_r($SN);
            // exit();
            //第三段SQL
            $sql="INSERT INTO ps_category_product
            SELECT c_id,id_product,(@SN:=@SN+1) AS row_number FROM ps_product
            WHERE id_manufacturer='m_id AND id_product NOT IN (
            SELECT id_product FROM ps_category_product WHERE id_category =c_id);";
            
            $insert_sql=DB::insert($sql);
            print_r($insert_sql);
            // exit();

        }


迷路
從你第一段SQL的條件式來看,搜尋出來的結果應該不只一筆資料
但是你並沒有用迴圈去讀取結果帶入第二段SQL
再者,因為你沒有貼出你的DB物件,所以我不知道你的搜尋結果長甚麼樣子
請貼出 print_r($Mid); 這邊輸出的結果

最有價值解答

浩瀚星空
其實,我光看到在foreach內跑sql我心就涼了。

認真來說,你這要打掉從sql中下手的。
不過再不了解你的需求及資料庫的情況。沒辦法給你有效的答案。

不過我還是先針對你的問題來給你提出。
如果改成id_category='".$Mid['c_id']."'會報 Undefined index: c_id錯誤

不就代表$Mid沒值了嘛?
因為也沒看到你有做空值判斷。確實有機會會拿到空值的情況。
Yueh-tsung YU
迷路跟浩瀚星空兩位大大好,這邊的問題已經解決了但有另外的問題,我再另外開個問題發問,很謝謝兩位的回答
回到頂部