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.