سؤال

في نموذج الموارد المخصص الخاص بي ، أحاول استخدام fetchAssoc للحصول على بعض البيانات من جدول.أحاول اقتباس مصفوفة في بيان ، وقد لاحظت أنها لا تعمل (ترجع مصفوفة فارغة) عند استخدام الارتباطات المسماة.ومع ذلك ، باستخدام الوسيطة الثانية من $select->where() على حد تعبير القيم في يعمل بشكل جيد.

أنا مجرد فضول لماذا لا يعمل هذا...

$bind = array( 
    'expert_id' => $expert_id,
    'product_id' => $adapter->quote($product_id),
);

//Debug:  Array ( [expert_id] => 1, [product_id] => '3032', '3091', '3132' )

$select = $adapter->select()
    ->from($this->getTable('namespace_module/table'), '*')
    ->where('product_id IN(:product_id)')
    ->where('expert_id = :expert_id');

// Debug: SELECT `namespace_module_table`.* FROM `namespace_module_table` WHERE (product_id IN('3032', '3091', '3132')) AND (expert_id = :expert_id)

ولكن هذا لا?

$bind = array( 
    'expert_id' => $expert_id,
);

//Debug: Array(  [expert_id] => 1 )

$select = $adapter->select()
    ->from($this->getTable('namespace_module/table'), '*')
    ->where('product_id IN(?)', $product_id)
    ->where('expert_id = :expert_id');

// Debug: SELECT `namespace_module_table`.* FROM `namespace_module_table` WHERE (product_id IN(:product_id)) AND (expert_id = :expert_id)

هل هي قاعدة عامة أنه لا يمكنك استخدام المعلمات المقيدة في بيان?لقد رأيت هذا و هذا, ، لكنني اعتقدت أن الماجنتو $adapter->quote كان من المفترض أن تهتم الطريقة بتحويل المصفوفة إلى قائمة.

هل كانت مفيدة؟

المحلول

الماجنتو ، ومعظم التجريدات قاعدة بيانات فب الحديثة ، تعتمد في نهاية المطاف على تنفيذ المعلمة ملزمة مكتبة بدو لدعم المعلمة ملزمة. شركة تنمية نفط عمان لا يدعم مجموعة ملزمة لمعلمة في لأسباب?لقد كان الأمر على هذا النحو طالما كنت أستخدم المكتبة ، وهو أمر مزعج للغاية.

كمحاولة للتغلب على هذا ، تقدم العديد من التجريدات قاعدة بيانات فب IN دعم خاصة بهم, غير منضم المعلمات.في المثال رمز الثاني الماجنتو الكامنة سكل المكتبات التجريد تولد IN بيان لك مع القيم المشفرة الثابت من الصفيف ، ومن ثم إرسال ذلك إلى قاعدة البيانات.هذا يختلف عن استخدام معلمة ملزمة-مع معلمة ملزمة الخاص بك إرسال بيان سكل مع تلك المعلمة ملزمة إلى قاعدة البيانات ، وأيضا قول قاعدة البيانات التي تنطبق المتغيرات التي المعلمات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top