D7- এ Db_query তে LIKE ব্যবহার করা


19

ড্রুপাল in-এ আমার এই জাতীয় একটি প্রশ্ন রয়েছে:

$sql = 'SELECT sid, score FROM search_index WHERE word LIKE "%%%s%%"';
$result = db_query($sql,$search_term);

এবং এটি দুর্দান্ত কাজ করেছে, তবে এখন আমি দ্রুপাল 7-তে আপগ্রেড করছি।

আমি পড়েছি এবং এটি কাজ করার কথা, তবে তা নয়:

$sql = 'SELECT sid, score FROM search_index WHERE word LIKE "%:term"';
$result = db_query($sql,array(':term'=>$search_term));

কেউ কি জানে যে আমি কী ভুল করছি?

উত্তর:


18

এটা চেষ্টা কর.

 $sql = 'SELECT sid, score FROM {search_index} WHERE word LIKE :term';
 $result = db_query($sql, array(':term' => '%' . db_like($search_term)));

2
ডিবি_ লাইক ...? কেন দ্রুপাল, আপনি কেন এমন করবেন?
— কোমি

হ্যাঁ, Drupal এর যেমন 7 একটি নতুন ডিবি API পরিচয় db_select(), db_insert(), db_update(), db_condition(), db_like(), ইত্যাদি পরিবর্তে ব্যবহার db_query(), এটি ব্যবহার করার জন্য পরামর্শ দেওয়া হচ্ছে db_select()। এখানে দেখুন drupal.org/developing/api/database , api.drupal.org/api/drupal/includes!database!database.inc/group/...
— Sithu

6
@ কুমি আপনি যদি ডিবি_লাইকের দিকে লক্ষ্য করেন তবে দেখতে পাবেন যে প্রতি ইঞ্জিনের ভিত্তিতে ডিবি স্তর দ্বারা পালিয়ে যাওয়া বিশেষত সম্পন্ন হয়েছে। এটি বহনযোগ্যতার কারণে সম্পন্ন করা হয়।
— এমপিডোনাদিও

এটি কি ঠিক যে প্রথম লাইনটি কমা দিয়ে শেষ হয়?
— 17:39 এ আন্ডারাউন্ড করুন

0

আপনি যদি নীচের লিঙ্কটি অনুসরণ করেন তবে http://api.drupal.org/api/drupal/includes!datedia!datedia.inc/group/datedia/7 এটি আপনাকে বলবে যে,

নোট করুন যে স্থানধারীদের একটি "সম্পূর্ণ" মান হওয়া উচিত। উদাহরণস্বরূপ, একটি লাইক কোয়েরি চালানোর সময় এসকিউএল ওয়াইল্ডকার্ড অক্ষর,%, মানটির অংশ হওয়া উচিত, কোয়েরি নিজেই নয়।

সুতরাং

SELECT nid, title FROM {node} WHERE title LIKE :title%;

ভুল.

কোয়েরিটি হওয়া উচিত

SELECT nid, title FROM {node} WHERE title LIKE :title;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.