Сайт работает на сервере а на Denwer! нет Fatal error: You have an error in your SQL syntax;

Статус
В этой теме нельзя размещать новые ответы.

gruz222

Постоялец
Регистрация
7 Авг 2008
Сообщения
62
Реакции
6
Ребята, подскажите пожалуйста, не могу понять

есть движок, на сервере работает отлично PHP Version 5.2.6-1+lenny13

при переносе на локалхост вылазит ошибка:

Fatal error: 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
Query: SELECT * FROM templates WHERE template_id= in E:\webservers\...\temp.class.php on line 357

на локалхосте PHP Version 5.2.17

БД и файлы все перенесены верно, почему там работает а у меня нет не понятно,

пробовал и денвер и опен сервер

проблемная строка вот
PHP:
$query = 'SELECT * FROM '.$this->tables['templates'].' WHERE template_id='.$structure['template_id'];
        $result = $this->dbc->Execute($query);
        if (!$result) {
            trigger_error($this->dbc->ErrorMsg().'<br>Query: '.$query, E_USER_ERROR);
            return false;
        }
        elseif ($result->RecordCount()<>1) {
            die('404 (tpl)');
        }[
 
Последнее редактирование модератором:
PHP:
$query = "SELECT * FROM ".$this->tables['templates']." WHERE template_id='".$structure['template_id']."'";
Попробуй так
 
Последнее редактирование модератором:
Для просмотра ссылки Войди или Зарегистрируйся

Спасибо за совет, ошибка, конечно исчезла, но я это и сам пробовал, только сайту от этого легче не стало (белый экран и ошибки типа:(

Notice: Undefined variable: path in E:\webservers\.... on line 260

Notice: Undefined index: type in E:\webservers\.... line 313

Notice: Undefined index: type in E:\webservers\.... line 317

Notice: Undefined index: s_id in E:\webservers\.... on line 342

Notice: Undefined index: cache_id in E:\webservers\.... on line 342

и т.д.

эти ошибки сопутствовали предыдущей ошибке fatal error


Мне вот, что еще интересно, почему это гад на сервере работает а у меня нет?

тут еще 1 момент - это движок 1-ой студии, может они там что-то специально придумали?
 
1. раз так много нотайсов значит скрипт whatever написал плохо, ибо под каждым нотайсом может быть более критическая ошибка
2. сервер это production там стоит error_reporting(0); ini_set('display_errors', false); я думаю если посмотришь в логи сайт, то увидишь там куча ошибок
3. локальная машина (Denwer) это dev, там где error_reporting(E_ALL); ini_set('display_errors', true);
 
$query = "SELECT * FROM ".$this->tables['templates']." WHERE template_id='".$structure['template_id']."'";
Попробуй так
Немного не верно, это не исключает того, что $structure['template_id'] = '', или не задано вообще, или содержит sql injection.
То есть, как вариант (если $structure['template_id'] не целое число:(
PHP:
$structure['template_id'] = trim($structure['template_id']);
 
if($structure['template_id'] && !empty($structure['template_id'])){
 
$query = sprintf('SELECT * FROM \'%s\' WHERE template_id=\'%s\'',$this->tables['templates'],$structure['template_id']);
 
$result = $this->dbc->Execute($query);
 
if (!$result) {
 
trigger_error($this->dbc->ErrorMsg().'<br>Query: '.$query, E_USER_ERROR);
 
return false;
 
}
 
elseif ($result->RecordCount()<>1) {
 
die('404 (tpl)');
 
}
 
} else {
 
die('404 (tpl)');
 
}

И проверьте, какие функции экранируют символы перед помещением в запрос, по типу mysql_real_escape_string,mysqli_real_escape_string(),PDO::quote().
И что за идиотская система, которая прет ошибки в браузер посетителя? Лучше бы в бд или файлы складывала. Мечта хакера, прямо.
 
gruz222 написал(а):
Notice: Undefined variable: path in E:\webservers\.... on line 260

Notice: Undefined index: type in E:\webservers\.... line 313

Notice: Undefined index: type in E:\webservers\.... line 317

Notice: Undefined index: s_id in E:\webservers\.... on line 342

Notice: Undefined index: cache_id in E:\webservers\.... on line 342


Мне вот, что еще интересно, почему это гад на сервере работает а у меня нет?
notice сыплются потому что на сервере и на денвере register_globals установлены в разные значения например (на денвере вроде off) Вообще для начала в phpinfo невредно глянуть. А затем тупо выкидывать $query в var_dump($query)
 
Да, проблема именно в register_globals. У тебя в скрипте используется вызов переменных на Register Globals ON. Поэтому некоторые переменные при выключеных reg_globals не существуют. Вот и появляются нотисы, а также скрипт не работает, т.к. пытается вытащить данные из переменных которые не существуют.
 
В свое время перепробовал различные локальные серверы, и денвер и опен сервер. Самый лучший вариант, оказался laragon (laragon.org) Денвером, раньше пользовался, но он уже давно не поддерживается и устарел. Можно по колдовать, но овчинка выделки не стоит. Что касается Опен сервер, то он у меня почему то не работает, хотя многие его расхваливают
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху