ОБНОВЛЕНО 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
;
Если я повторяю $filterQuery, он отображается правильно, и когда я копирую эхо-строку в свой код, MySQL возвращает правильные результаты:
SELECT * FROM fdatav1 JOIN ddatav1 ON ddatav1.ID = fdatav1.ID WHERE (testType1 = '1')
Я также попытался применить $filterQuery к строке. Нет успеха.
ОБНОВЛЕНО 04.12.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'];
}
Когда я повторяю $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);
я получаю синтаксическую ошибку рядом с ''. Кто-нибудь знает, как это решить?
The variable sql statement starts with "SELECT FROM... and ends with "
да, круто. Но нам нужен реальный код. - person Vasiliy Ermolovich   schedule 12.04.2011string 'SELECT * FROM fdatav1 JOIN ddatav1 ON ddatav1.ID = fdatav1.ID WHERE (testType1 = '1') ' (length=86)
Не уверен, что одинарные кавычки внутри одинарных кавычек могут быть проблемой, но я попытался использовать настоящий escape с ошибками в \'. Проверю снова. - person Mario111   schedule 13.04.2011