البحث عن phpbb 'topic_title' عبر mysql php ، لكن المطابقة الدقيقة لا تعمل

StackOverflow https://stackoverflow.com/questions/2582705

  •  24-09-2019
  •  | 
  •  

سؤال

$sql = sprintf( "SELECT topic_title 
                   FROM `phpbb_topics` 
                  WHERE `topic_title` LIKE '%%%s%%' LIMIT 20"
               , mysql_real_escape_string('match this title')
              );

الذي أقوم بتشغيل هذا الاستعلام في phpmyadmin النتائج هي: (صحيح)

match this title
match this title 002

لكن عندما أقوم بتشغيل نفس استعلام MySQL في PHP أحصل عليه: (غير صحيح)

match this title 002

لقد حاولت أيضًا المباراة مع نفس النتيجة مع كل من PHP و PhpmyAdmin:

$sql = "SELECT topic_title 
          FROM phpbb_topics 
         WHERE MATCH (topic_title) 
               AGAINST('match this title' IN BOOLEAN MODE)";

كتلة الكود الكاملة التي تستخدمها للبحث مع:

mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("phpbb") or die(mysql_error());         
$query = "match this title";
$query = "SELECT topic_title 
    FROM phpbb_topics 
    WHERE MATCH (topic_title) 
          AGAINST('$query' IN BOOLEAN MODE)"; 
// Doesn't work (these 2 both give the same result "match this title 002" and no the "match this title")
// $query = "SELECT * FROM `phpbb_topics` 
//    WHERE `topic_title` 
//    LIKE '%$query%' 
//    LIMIT 0, 30 "; // Doesn't work
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());

while($row = mysql_fetch_array($result)){
    $topic_title = $row['topic_title'];
    echo "$topic_title";
}

أي فكرة عن ما أفعله خطأ؟

كنت أبحث في كل مكان ووجدت بجوار أي مساعدة :(

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

المحلول

المشكلة هي أنه بعد تنفيذ استعلامك ، تجلب الصف الأول ، لا تفعل شيئًا معه ، أدخل الحلقة عن طريق جلب الصف الثاني وبدء نتائج الطباعة ..

إذا قمت بإزالة الأول $row = mysql_fetch_array($result), ، (مباشرة بعد $result = mysql_query($query) or die(mysql_error());) يجب أن تكون بخير.

تعليق آخر ؛ إذا قمت بتردد متغير ، فلن تضطر إلى وضع أي Qoutes حوله. وفي الطريقة التي تقوم بها الآن ، لن تحصل على سطر جديد بين النتائج ، لذا قد ترغب في تغيير هذا الخط إلى echo $topic_title . "<br>";

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