我正在我的網站上建立一個搜索功能,我有一些麻煩在SQL中定位錯誤。有四個SQL語句用於使用AND和OR關鍵字返回相同搜索的計數。第二組SQL語句根據當前搜索的頁碼返回AND的實際結果和OR搜索限制。錯誤在您的SQL語法 - 獲取此錯誤,無法確定錯誤的位置
下面我將顯示和count和and搜索的SQL函數。 其他兩個SQL語句的代碼完全相同,只使用OR而不是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;
}
任何意見將不勝感激。 感謝 阿奇
你會得到什麼錯誤? – dionyziz 2010-09-03 13:32:18
什麼數據庫?顯示結果SQL String被創建。 – JeffO 2010-09-03 13:33:11
爲什麼要用AND而不是IN? – XstreamINsanity 2010-09-03 13:41:12