это мой код:
$Line = mysql_real_escape_string(postVar("showline"));
$Model = mysql_real_escape_string(postVar("showmodel"));
$NIK = mysql_real_escape_string(postVar("showNIK"));
$sql ="SELECT NIK,Line,Model FROM inspection_report";
$sql.="WHERE NIK='".$NIK."' AND Model LIKE '%".$Model."%' AND Line='".$Line."'";
$sql.="ORDER BY Inspection_datetime DESC LIMIT 0 , 30";
$dbc=mysql_connect(_SRV, _ACCID, _PWD) or die(_ERROR15.": ".mysql_error());
mysql_select_db("qdbase") or die(_ERROR17.": ".mysql_error());
$res=mysql_query($sql) or _doError(_ERROR30 . ' (<small>' . htmlspecialchars($sql) . '</small>): ' . mysql_error() ); // submit SQL to MySQL and error trap.
$num=mysql_affected_rows();
$objJSON=new mysql2json();
print(trim($objJSON->getJSON($res,$num,'aaData',false)));
mysql_free_result($res);
у firebugs показывает, что подключение к странице процесса нормально... но при ответе показать ошибку.. где моя вина?
Я предполагаю, что это PHP.
Добавьте команду echo $sql;
после ваших строк выше. Уверен, что ваш запрос неверен, т.е. Нет пробела между концом предложения FROM
и WHERE
. То же самое с ORDER BY
. Бывает все время;)
То, что сказал Джейсон, хорошо и покажет вам, где ошибка, которая выглядит как нехватка пробелов в разрывах строк. Добавьте пробел до WHERE
и еще до ORDER
echo $sql;
показывает пожалуйста. Дополнительный код - это здорово, но сейчас взгляд на завершенный запрос может помочь нам немного больше.
Я нашел намного проще писать и читать свои SQL-заявления, объявляя SQL String в одном наборе кавычек, как в:
$sql ="SELECT NIK,Line,Model FROM inspection_report
WHERE NIK='$NIK' AND Model LIKE '%$Model%' AND Line='$Line'
ORDER BY Inspection_datetime DESC LIMIT 0 , 30";
Этот метод также решит вашу проблему с отсутствующими пробелами между строками.
Как указано в других ответах, вам не хватает пробелов в вашем запросе:
$sql = "SELECT .... inspection_report";
$sql .= "WHERE NIK=..."
etc...
будет генерировать строку запроса:
SELECT ... inspection_reportWHERE NIK=...
^^--- problem is here
Обратите внимание на отсутствие пробела перед предложением WHERE. Вы должны либо изменить свои инструкции конкатенации строк, чтобы явно включить пробел:
$sql = "SELECT ... inspection_report";
$sql .= " WHERE NIK=..."
^---notice the space here
или используйте альтернативный синтаксис для построения строки. Для многострочных присвоений строк обычно всегда предпочтительнее использовать HEREDOC s, если вам не нужно конкатенации результатов или констант вызова функции в строка:
$sql = <<<EOL
SELECT ... inspection report
WHERE NIK=...
EOL;
PHP будет соблюдать разрывы строк внутри heredoc, и MySQL будет молча рассматривать их как пробелы, сохраняя целостность вашего запроса.
echo $sql;
на ваш оригинальный пост, и давайте еще раз посмотрим.