ОБНОВЛЕНО 14/04/2011
Все еще в беде.Я сократил свой код до его простейшей формы.Я использую функцию IF, чтобы проверить isset () для флажка, который работает нормально.Если флажок установлен, он объединяет строку, состоящую из двух частей.Очень просто.
if (isset($_POST[testType1])) {
$filterQuery .= "(testType1 = '1'";
}
$filterQuery .= ") ";
}
Когда я использую mysql_fetch_assoc и отображаю информацию в $ строках, это работает.Но когда я просматриваю исходный код страницы в 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
;
Если я отображаю $ 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'];
}
Когда я повторяю запрос $, я получаю:
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);
, я получаю синтаксическую ошибку около ''.Кто-нибудь знает, как решить эту проблему?