Я создаю функцию поиска на своем веб-сайте, и у меня возникают проблемы с поиском ошибки в SQL.Существует четыре оператора SQL, которые используются для возврата значений одного и того же поиска с использованием ключевых слов AND и OR.Второй набор операторов SQL возвращает фактические результаты поисков AND и OR, ограниченных в соответствии с номером страницы текущего поиска.
Ниже я покажу функцию SQL для поиска и count, и и.Код для двух других операторов SQL точно такой же, только с использованием ИЛИ вместо AND.
function _and_count($words) {
require_once("include/conn.inc.php");
$arraysize = count($words);
$and_count_sql = "SELECT COUNT(DISTINCT tg_id)
FROM tg_keywords
WHERE tg_keyword=";
if ($arraysize > 1) {
foreach($words as $word){
$count = 1;
if ($count == 1){
$and_count_sql .= "'".$word."' AND ";
}
elseif ($count < $arraysize){
$and_count_sql .= "tg_keyword='".$word."' AND ";
}
else {
$and_count_sql .= "'".$word."'";
}
$count++;
}
} elseif ($words == 1) {
$and_count_sql .= "'".$words."'";
}
$and_count_result = mysql_query($and_count_sql)
or die(mysql_error());
return $and_count_result;
}
function _search_and($words, $startpos, $endpos) {
require_once("include/conn.inc.php");
$arraysize = count($words);
$search_and_sql = "SELECT DISTINCT tg_id COUNT(*) AS nb
FROM tg_keywords
LEFT JOIN tg_info
ON tg_info.tg_id=tg_keywords.tg_id
WHERE tg_keyword=";
if ($arraysize > 1){
foreach($words as $word) {
$count = 1;
if ($count == 1 && $count < $arraysize) {
$search_and_sql .= "'".$word."' AND ";
} elseif ($count == 1 && $count == $arraysize) {
$search_and_sql .= "'".$word."'";
} elseif ($count < $arraysize) {
$search_and_sql .= "tg_keyword='".$word."' AND ";
} elseif ($arraysize == $count) {
$search_and_sql .= "'".$word."'";
}
$count++;
}
} elseif ($arraysize == 1) {
$search_and_sql .= "'".$words."'";
} else {
$search_and_sql .= "''";
}
$search_and_sql .= "GROUP BY tg_id
ORDER BY nb DESC, tg_info.date_added ASC
LIMIT ".$endpos." OFFSET ".$startpos;
$search_and_result = mysql_query($search_and_sql, $link)
or die(mysql_error());
$and_array = mysql_fetch_array($search_and_result);
return $and_array;
}
Любой совет будет принят с благодарностью.Спасибо, Арчи