INSERT — странная ошибка

~AquaZ~

Новичок
Написал маленькую библиотеку для работы с СУБД. TBL_PRE — префикс имён таблиц. Вот пара функций, часть класса sql:
PHP:
public static function query($q)
{
    return mysql_query($q);
}
public static function insert($table, $fields, $values)
{
    return 'INSERT INTO ' . TBL_PRE.$table.' ('.$fields.') VALUES ('.$values.')';
}
Вот эта строка должна вставлять новую строку:
PHP:
$school = sql::query(sql::insert('schools', 'number,name,login,pass_md5', $number . ', "' . $name . '", "' . $login . '", "' . $pass_md5 . '"'));
Но тут возникает ошибка:
Код:
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 'INSERT INTO schools (number,name,login,pass_md5) VALUES (200, "Школко д' at line 1
А если я просто выведу результат, возвращаемый sql::insert (т.е. текст запроса), а потом вручную вызову sql::insert('этот текст') (или выполню в PMA), то всё работает.
 

Фанат

oncle terrible
Команда форума
библиотека, конечно, ужасная.
отдельная функция для того, чтобы сэкономить ажно ДВА слова из запроса
никакой обработки данных...

и вообще - откуда у тебя берётся сообщение об ошибке? ты нам точно тот же самый код показываешь, который запускаешь?
 

~AquaZ~

Новичок
библиотека, конечно, ужасная.
отдельная функция для того, чтобы сэкономить ажно ДВА слова из запроса
никакой обработки данных...

и вообще - откуда у тебя берётся сообщение об ошибке? ты нам точно тот же самый код показываешь, который запускаешь?
Точно тот же, в том-то и проблема. Сообщение об ошибке — далее идёт проверка:
Код:
if (!$school)
{
    die(mysql_error());
}
Кстати, если что, ошибка #1064.
 

~AquaZ~

Новичок
Вот ещё проверил:
PHP:
$school = sql::query(sql::insert('schools', 'number,name,login,pass_md5', $number . ', "' . $name . '", "' . $login . '", "' . $pass_md5 . '"'));
if (!$school)
{
    echo '1:'.mysql_error()."\r\n";
}
 
$s2 = sql::query('INSERT INTO schools (number,name,login,pass_md5) VALUES (200, "Двести", "s200", "9e08821aae9c866b4b66cd831860757b") ');
die('2: '.mysql_error());
Код:
1: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 'INSERT INTO schools (number,name,login,pass_md5) VALUES (200, "Двести", "' at line 1
2:
 

Фанат

oncle terrible
Команда форума
ужас какой.
ты можешь привести хоть одну причину, по которой ты пишешь sql::query вместо mysql_query?
в твоем коде нет вообще ничего, что оправдывало бы наличие такого класса.
перепиши свою гениальную паблик статик факшен квери хотя бы так:
PHP:
public static function query($q)
{
    return mysql_query($q) or trigger_error(mysql_error()." in ".$q);
}
а задавая вопрос "где у меня в запросе ошибка", надо приводить ошибочный запрос, целиком. РОВНО ТОТ, который отправляется в базу.
а не писать словами, что он у тебя прекрасно выполняется.
 

~AquaZ~

Новичок
Ну допустим. Но почему здесь-то не работает? id точно число, ошибка та же:
PHP:
$del = mysql_query('DELETE FROM schools WHERE id = '. $id);
 

~AquaZ~

Новичок
Это?
под строкой, где произошла ошибка, обязательно надо вывести на экран mysql_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 'DELETE FROM schools WHERE id = 4' at line 1
DELETE FROM schools WHERE id = 4
 

Фанат

oncle terrible
Команда форума
ошибка выглядит странной.
такое ощущение, что сервер не понимает обычного синтаксиса.
попробуй-ка запрос выводить через функцию urlencode(). может, в нем какие-то посторонние символы
 
Сверху