ОБНОВЛЕНО 14/04/2011
Все еще в беде. Я сократил свой код до его простейшей формы. Я использую функцию IF для проверки isset () для флажка, который работает нормально. Если флажок установлен, он объединяет строку, состоящую из двух частей. Очень просто.
if (isset($_POST[testType1])) { $filterQuery .= "(testType1 = '1'"; } $filterQuery .= ") "; }
Когда я использую mysql_fetch_assoc и повторяю информацию в $ rows, она работает. Но когда я просматриваю источник страницы в Google Chrome, он говорит: Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
;
Если я эхо $ filterQuery, он отображается правильно, и когда я копирую эхо-строку в свой код, MySQL возвращает правильные результаты:
SELECT * FROM fdatav1 JOIN ddatav1 ON ddatav1.ID = fdatav1.ID WHERE (testType1 = '1')
Я также попробовал лить $ filterQuery в строку. Нет успеха.
ОБНОВЛЕНО 12/04/2011
У меня все еще есть проблема, это не опечатка. См. Следующий код:
$query = "SELECT * FROM fdatav1 JOIN ddatav1 ON ddatav1.ID = fdatav1.ID WHERE ";` $orTrigger = "";` function setOrTrigger() { global $orTrigger; if ($orTrigger=="") { $orTrigger="OR "; } } function getTestFilterQuery($testType) { if (!(isset($_POST[test1])) && !(isset($_POST[test2])) && !(isset($_POST[test3]))) { $returnString = NULL; return $returnString; } } if (isset($_POST[testType1])) { $filterQuery .= $orTrigger ."(testType1 = '1'"; setOrTrigger(); $addTestFilterQuery = getTestFilterQuery("testType1"); if ($addTestFilterQuery != NULL) { $filterQuery .= "AND " .$addTestFilterQuery; } $filterQuery .= ") "; } $connection = mysql_connect(localhost, $username, $password); if (!$connection) { die('Not connected : ' . mysql_error()); } $db_selected = mysql_select_db($database, $connection); if (!$db_selected) { die ('Can\'t use db : ' . mysql_error()); } $result = mysql_query($filterQuery); if (!$result) { die('Invalid query: ' . mysql_error()); } while ($row = @mysql_fetch_assoc($result)) { echo $row['name']; echo $row['description']; }
Когда я получаю echo $ query, я получаю:
SELECT * FROM fdatav1 JOIN ddatav1 ON ddatav1.ID = fdatav1.ID WHERE (testType1 = '1')
Когда я копирую его непосредственно в mysql_query, например:
mysql_query("SELECT * FROM fdatav1 JOIN ddatav1 ON ddatav1.ID = fdatav1.ID WHERE (testType1 = '1')");
он отлично работает. Но когда я передаю переменную как:
mysql_query ($ filterQuery);
Я получаю синтаксическую ошибку, близкую к ''. Кто-нибудь знает, как это решить?