Tutorial :Searching with MATCH(), AGAINST() and AS score with mysqli and php



Question:

Below is the code I am using to search my table. I have made the relevant columns FULLTEXT in the table. This doesn't return me anything. Can someone tell me what it is that i'm doing wrong? Thanks in advance.

$sql = 'SELECT id, person_name, classroom, school, MATCH (person_name, classroom, school) AGAINST (?) AS score FROM images WHERE MATCH(person_name, classroom, school) AGAINST(?) ORDER BY score DESC';    $stmt = $db_connection->prepare($sql);    $stmt->bind_param('ss',$keyword,$keyword);    $stmt->execute();    $stmt->store_result();  $stmt->bind_result($id,$uname,$class,$school);    $xml = "<data>".PHP_EOL;    while($stmt->fetch()){        $xml .= "   <person>".PHP_EOL;      $xml .= "       <id>$id</id>".PHP_EOL;      $xml .= "       <name>$uname</name>".PHP_EOL;      $xml .= "       <class>$class</class>".PHP_EOL;      $xml .= "       <school>$school</school>".PHP_EOL;      $xml .= "   </person>".PHP_EOL;    }    $xml .= "</data>";    echo $xml;  

Below is an image of the indexes of the table: alt text http://clients.bionic-comms.co.uk/drew/Picture1.png

It would appear that the problem lies in trying to bind the parameters before executing the query. Can someone confirm that you can use this query with prepared statements?


Solution:1

Offhand, it would look like your SQL's got a syntax error: DES at the end should be DESC. You have no error checking on the prepare/execute calls, so there's no way to tell if either spit out an error.

If that's just a typo entering it here and the real query's fine, what happens when you run it manually in phpmyadmin? Any results there?


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »