Поиск с MATCH (), AGAINST () и AS оценка с MySQL и PHP - PullRequest
2 голосов
/ 06 апреля 2010

Ниже приведен код, который я использую для поиска в моей таблице.Я сделал соответствующие столбцы FULLTEXT в таблице.Это ничего не возвращает мне.Может кто-нибудь сказать мне, что я делаю не так?Заранее спасибо.

$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;

Ниже приведено изображение индексов таблицы: альтернативный текст http://clients.bionic -comms.co.uk / drew / Picture1.png

Может показаться, что проблема заключается в попытке связать параметры перед выполнением запроса.Может ли кто-нибудь подтвердить, что вы можете использовать этот запрос с подготовленными утверждениями?

1 Ответ

0 голосов
/ 06 апреля 2010

Неожиданно выглядело бы, как будто ваш SQL получил синтаксическую ошибку: DES в конце должно быть DESC. У вас нет проверки ошибок при подготовке / выполнении вызовов, поэтому нет способа узнать, выплеснул ли какой-либо из них ошибку.

Если это просто опечатка, введенная здесь, и реальный запрос в порядке, что произойдет, когда вы запустите его вручную в phpmyadmin? Какие-нибудь результаты есть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...