Вроде посмотрел на форуме и не смог найти ответа. Проблема в следующем: Есть форма она создается автоматом в зависимости какие поля у таблицы в базе. Потом данные передаются на сервак (скрипт) там все перебирается на ненужные символы и тому подобное, в полях есть и html он экранируется addslashes. Потом я наздаю sql запрос вот так: PHP: if ($error==0){ foreach($post_arr as $key=>$name){ if($key=='date'){ $name = $date_sys; }else if($key=='time'){ $name = $time_sys; }else if($key=='vie'){ $name = mt_rand(0, 10); }else if($key=='md5'){ $name = md5($e_mail.''.$date_sys.''.$time_sys); } //$name = stripslashes($name); $sql_insert.='`'.$key.'`, '; if($key!='id'){ $sql_insert_post.=', "'.$name.'"'; }else{ $sql_insert_post.='"'.$name.'" '; } } } $sql = 'INSERT INTO `'.$table.'` ('.$sql_insert.') VALUES ('.$sql_insert_post.')'; $result = mysql_query($sql) or die('insert '.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 ') VALUES ('''' , ''1'', ''1'', ''Украины создала временную следс
macik нельзя формировать список имён полей автоматом из данных поста. нельзя искать ошибки в запросе, ни разу даже не посмотрев, как он выглядит!
$sql Код (Text): INSERT INTO `goods_pages_ru` (`id`, `goods`, `goods_section`, `headline`, `text`, `date`, `time`, `foto`, `vie`, ) VALUES ("" , "1", "1", "Украины создала временную следственную комиссию ", "<A href=\"http://lenta.ru/news/2006/11/02/rada/\"><IMG title=\".......", "2006-11-02", "15:36:07", "2006-11-02_15-36-08_wal_reb_500.jpg", "7")
topas Блин в данных учел запятую, а в построении таблиц нет... Чебурген А в чем ужас, что не так? Подскажи?
Чебурген Я его не из поста формирую, а из базы данных. Плюс название переменных post и их значение проверяются на корректность и соответствие. Форма тоже формируется на основании базы данных. Или это плохо?
не рассказывай мне сказки. foreach($post_arr as $key=>$name) - это называется из базы? если они действительно проверяются, то тогда да, можно. но лично я бы не стал доверять проверкам, а перечислил все поля в скрипте руками. то, как формируется форма, не имеет к вопросу ни малейшего отношения. форма ушла на клиент. всё! там с ней могут сделать всё что угодно. забудь как ты её формировал и из чего собирал.
Я наверно з глупил по названиям переменных! работает так... PHP: $post_arr // это запрос SHOW FULL COLUMNS FROM // потом я оставляю только то, что есть в базе PHP: $post_arr[$row->Field]=$post[$row->Field]; // ну а дальше проверки ... $post это и есть $_POST PS А по поводу формы я уже имел проблему с отправкой через мою форму спама, я ее решил тем, что создавал Кеш md5 и пихал его в сессию, потом проверял на сервере... и все. После этого спама не было.
Вопрос такой. У меня есть переменная $nomer. Я её получаю методом $nomer=$_GET['nomer']; Потом идет sql запрос к таблице с названием, которое хранится в єтой пременной. Вот так: $nomer=$_GET['nomer']; $query="SELECT* FROM `$nomer`;"; mysql_query($query); Запрос не выполняется. Пробовал и так: $query="SELECT* FROM '$nomer';"; и так: $query="SELECT* FROM $nomer;"; и так: $query="SELECT* FROM \'$nomer\';"; и даже так: $query="SELECT* FROM '`$nomer`';"; и вот так: $query="SELECT* FROM {$nomer};"; не работает... А вот если явно указать $query="SELECT* FROM 000456789;"; то всё работает. У меня вопрос таков: Как в sql запросе обратится к имени таблицы, которая хранится в переменной??
1. Точка с запятой не нужны. 2. Звезду подальше. 3. Апострофы - зло. Результат: Код (Text): $query="SELECT * FROM ".$nomer;
psoi Два замечания. 1. Имя таблицы нельзя передавать через GET 2. БД надо проектировать так, чтобы таблица была одна. Если у тебя куча таблиц с именами из циферок - значит, ты что-то неправильно сделал. И эти замечания гораздо важнее твоих примитивных проблем с генерацией текстовой строки с помощью PHP. Рекомендую над ними задуматься.
имхо твоё неправильное. "данное применение" ничем не отличается от любых других случаев составления запроса. согласно документации, элементы БД должны быть заключены в обратные одинарные кавычки. А зло - это, как раз, когда запрос составлен без них, и вылетает с ошибкой.
Т.е. ты заключаешь в запросах название таблицы в кавычки? Странно. У меня и без этого работает... Возможно строгое соответствие со стандартами не всегда предусматривается. А операторы и функции ты тоже в кавычки заключаешь? P.S. А зло - это засовывать переменную внутрь строки. Я это имел ввиду.
Хотите анекдот. Перенес скрипт на другой хостинг. Там ВСЁ работает. И переменная передается через get. И имя таблицы идет в запросе как переменная. "SELECT* FROM `$nomer`;"; Ничего не понимаю......... з.ы. Мне как раз и нужно, чтобы под каждый номер была своя таблица. Как мне кажется так больше порядка и быстрее идёт работа.
Анекдот здесь только один. Это твои таблицы, которых ты расплодил, как китайцев. И то, что ты не понимаешь русского языка.
Да. Я понял. Нужно всё лепить в одну таблицу. Даже если данные друг к другу никоим образом не относятся и структура таблиц разная. Тогда будет правильно
psoi Тебе ребята правильно говорят по поводу названий... ты посуди сам если у тебя будет около 100 таблиц ... ты без того чтобы не заглянуть в структуру таблицы не напишешь запрос вручную. Но это дело конечно личное ...