Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка синтаксиса в БД 
:(
    Опции темы
Kolombin
Дата 24.1.2011, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 24.1.2011
Где: Кострома

Репутация: нет
Всего: нет



Существует следующая строка кода 
Код

$db->super_query("INSERT INTO " . PREFIX . "_clean (name, path) values " . implode(', ', $inserts));


Она вызывает следующую ошибку:
Код

MySQL Error!
------------------------

The Error returned was:
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

Error Number:
1064

INSERT INTO dle_clean (name, path) VALUES


Что бы я не делал - ошибка не исчезает, но код вообще-то работает (т.е. в БД заносятся необходимые значения). Я так понимаю, что код написан для более старой версии mysql (у меня 5.1.54 MySQLi), но как избавится от ошибки? Какая может быть разница в данном коде для 4-й версии и 5-й?
PM MAIL WWW   Вверх
bars80080
Дата 24.1.2011, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



дык, у тебя же справа никаких значений нет. эта ошибка не зависит от версии мускл, а только от пользователя, который не может проверить перед вставкой в запрос массив
PM MAIL WWW   Вверх
Kolombin
Дата 24.1.2011, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 24.1.2011
Где: Кострома

Репутация: нет
Всего: нет



Я это так же заметил, но дело в том, что раз в таблицу заносится то, что и должно заноситься по замыслу и содержится как результат работы функции 
Код

. implode(', ', $inserts))
 то я посчитал, что имеет место лишь ошибка синтаксиса...


Я делал всевозможные "манипуляции" (например, убирал "кавычки" после values, смещал их... короче пробовал самое невероятное, но более менее логическое), но ошибка не исчезает.
PM MAIL WWW   Вверх
skyboy
Дата 24.1.2011, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(Kolombin @  24.1.2011,  17:59 Найти цитируемый пост)
Я делал всевозможные "манипуляции"

Код

echo "INSERT INTO " . PREFIX . "_clean (name, path) values " . implode(', ', $inserts);

тоже делал? 
PM MAIL   Вверх
Kolombin
Дата 25.1.2011, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 24.1.2011
Где: Кострома

Репутация: нет
Всего: нет



skyboy Нет, так раньше не пробовал, но попробовал сейчас.

Изменения есть... В том смысле, что теперь уже явно ругается на неверный аргумент
Код

86 Warning: implode(): Invalid arguments passed in ........./engine/inc/include/filetree.php on line 65 INSERT INTO dle_clean (name, path) values


... и в отличии от исходного кода, который выдавал ошибку синтаксиса, но таблица заполнялась значениями - то теперь таблица пуста
PM MAIL WWW   Вверх
gta4kv
Дата 25.1.2011, 14:09 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



эм. покажите ваш
Код

var_dump($inserts);

PM MAIL   Вверх
Kolombin
Дата 25.1.2011, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 24.1.2011
Где: Кострома

Репутация: нет
Всего: нет



Тело всей функции, которая вызывает ошибку и в которой $inserts приобретает свои значения

Код

function php_file_tree_dir($directory, $extensions = array(), $first_call = true) {
    // Recursive function called by php_file_tree() to list directories/files
    global $db;
    // Get and sort directories/files
    if( function_exists("scandir") ) $file = scandir($directory); else $file = php4_scandir($directory);
    natcasesort($file);
    // Make directories first
    $files = $dirs = array();
    foreach($file as $this_file) {
        if( is_dir("$directory/$this_file" ) ) $dirs[] = $this_file; else $files[] = $this_file;
    }
    $file = array_merge($dirs, $files);
    
    // Filter unwanted extensions
    if( !empty($extensions) ) {
        foreach( array_keys($file) as $key ) {
            if( !is_dir("$directory/$file[$key]") ) {
                $ext = substr($file[$key], strrpos($file[$key], ".") + 1); 
                if( !in_array($ext, $extensions) ) unset($file[$key]);
            }
        }
    }
    
    if( count($file) > 2 ) { // Use 2 instead of 0 to account for . and .. "directories"
        if( $first_call ) $first_call = false; 
        foreach( $file as $this_file ) {
            if( $this_file != "." && $this_file != ".." ) {
                if( is_dir("$directory/$this_file") ) {
                    // Directory
                    php_file_tree_dir("$directory/$this_file", $extensions, false);
                } else {
                    // File
                    $directory = $db->safesql($directory);
                    $inserts[] = "('$this_file', '$directory')";
                    $result++;
                }
                if (count($inserts) == $limit_insert) {
                    $db->super_query("INSERT INTO " . PREFIX . "_clean (name, path) values " . implode(', ', $inserts));
                    $inserts = array();
                }
            }
        }
        if(!empty($inserts)) {
            $db->super_query( "INSERT INTO " . PREFIX . "_clean (name, path) values " . implode(', ', $inserts) );
        }
    } else rmdir($directory);
}

PM MAIL WWW   Вверх
gta4kv
Дата 25.1.2011, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Не надо код.

Непосредственно перед запросом сделайте
Код

var_dump($inserts);


и 

Код

var_dump("INSERT INTO " . PREFIX . "_clean (name, path) values " . implode(', ', $inserts) )


Добавлено через 18 секунд
а вывод сюда
PM MAIL   Вверх
Kolombin
Дата 27.1.2011, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 24.1.2011
Где: Кострома

Репутация: нет
Всего: нет



Код

var_dump($inserts);

возвращает NULL

Код

var_dump("INSERT INTO " . PREFIX . "_clean (name, path) values " . implode(', ', $inserts) );

возвращает ошибку 
Код

Warning: implode(): Invalid arguments passed in ......./engine/inc/include/filetree.php on line 69
string(42) "INSERT INTO dle_clean (name, path) values "

69-я строка - это именно 
Код

var_dump("INSERT INTO " . PREFIX . "_clean (name, path) values " . implode(', ', $inserts) );

PM MAIL WWW   Вверх
gta4kv
Дата 27.1.2011, 09:45 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Не улавливаете, не?

Массив $inserts у вас пустой. (NULL) По-этому и implode ругается, ибо передан не массив.

PM MAIL   Вверх
skyboy
Дата 27.1.2011, 10:08 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(gta4kv @  27.1.2011,  08:45 Найти цитируемый пост)
Массив $inserts у вас пустой.

ну, не запутывай человека smile
пустой массив - это array()
PM MAIL   Вверх
gta4kv
Дата 27.1.2011, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



ладно, $inserts вообще не существует smile
PM MAIL   Вверх
Kolombin
Дата 28.1.2011, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 24.1.2011
Где: Кострома

Репутация: нет
Всего: нет



Спасибо всем - буду разбираться.... если возникнут "недоразумения" то,..  попробую еще раз обратиться...

PS: Непонятно, если массив пустой, то как  таблица заполняется все-таки нужными значениями... я же это вижу после завершения выполнения скрипта (пусть даже с ошибкой) в самой таблице... Ладно, пока оставим дальнейшие расспросы - постараюсь сам докопаться - это полезно... еще раз всем спасибо, что не оставили вопрос без внимания
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.