Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: один запрос выполняется, другой нет

Сообщения:  [1-9] 

 
 автор: netman   (12.03.2008 в 22:51)   письмо автору
 
   для: cheops   (12.03.2008 в 11:54)
 

Это магические кавычки.
file_get_contents() как я понимаю вернет строку, а ее уже в запрос?

Люди которым делаю не особо разбираются и, скорее всего, мне не один раз позвонят. Хотел просто чтоб из любого места можно было с бд работать.

а ведь файл можно также через форму загрузить, а уже потом file_get_contents()?

   
 
 автор: cheops   (12.03.2008 в 11:54)   письмо автору
 
   для: netman   (12.03.2008 в 02:56)
 

А в phpMyAdmin кавычки тоже экранированы? Или это магические кавычки делают? Попробуйте не через HTML-форму загружать дамп, а залить его через FTP и получить содержимое при помощи функции file_get_contents();

   
 
 автор: netman   (12.03.2008 в 02:56)   письмо автору
 
   для: cheops   (12.03.2008 в 00:17)
 

Запрос:

CREATE TABLE `about1` (
`id_about` int(8) NOT NULL auto_increment,
`action` varchar(30) NOT NULL default '',
`name` varchar(30) NOT NULL default '',
`pos` int(8) NOT NULL default '0',
PRIMARY KEY (`id_about`)
) ENGINE=MyISAM;

Вот что выдает:

ошибка при обращении к бд
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 '\'\', `name` varchar(30) NOT NULL default \'\', `pos` int(8) NOT NULL defa' at line 3
CREATE TABLE `about1` ( `id_about` int(8) NOT NULL auto_increment, `action` varchar(30) NOT NULL default \'\', `name` varchar(30) NOT NULL default \'\', `pos` int(8) NOT NULL default \'0\', PRIMARY KEY (`id_about`) ) ENGINE=MyISAM;


А этот запрос прошел (поудалял все NOT NULL default ''):

CREATE TABLE `about1` (
`id_about` int(8) NOT NULL auto_increment,
`action` varchar(30),
`name` varchar(30),
`pos` int(8) NOT NULL,
PRIMARY KEY (`id_about`)
) ENGINE=MyISAM;


В кавычках все дело! Самое интересное, что запрос не сам писал, а взял из дампа, созданного phpmyadmin`oм

   
 
 автор: cheops   (12.03.2008 в 00:17)   письмо автору
 
   для: netman   (11.03.2008 в 13:36)
 

Замените блок следующим образом
<?php
if (isset($_POST['sql'])) 

 
$res mysql_query($_POST['sql']); 
 if (!
$res)
 {
   echo 
"<div class=error>ошибка при обращении к бд</div>"
   echo 
"<div class=error>".mysql_error()."</div>"
   echo 
"<div class=error>".$_POST['sql']."</div>"
 }
}
?>

Что выдаётся? $_POST['sql'] содержит лишь один SQL-запрос или много? Дело в том, что mysql_query() за один раз может обрабатывать лишь один SQL-запрос.

   
 
 автор: KirillKiev   (11.03.2008 в 16:09)   письмо автору
 
   для: netman   (11.03.2008 в 16:05)
 

print mysql_error();

эта функция возвращает ошибку а не печатает ее
и в эту функцию нужно (можно) отправлять не результат запроса а линк коннекта

   
 
 автор: netman   (11.03.2008 в 16:05)   письмо автору
 
   для: netman   (11.03.2008 в 13:36)
 

Кстати на сайте админка есть, так вот она работает (после того как admin базу обновил). Может проблема в textarea? Из-за символа перевода строки напр.

   
 
 автор: netman   (11.03.2008 в 13:36)   письмо автору
 
   для: cheops   (11.03.2008 в 13:04)
 

Не совсем знаю как пользоваться функцией mysql_error(), делаю вот что:

if (isset($_POST['sql']))
{
 $res = mysql_query($_POST['sql']);
 if (!$res) echo("<div class=error>ошибка при обращении к бд</div>");
 mysql_error();
}

если все правильно, то ничего не выдает. просто пишет "ошибка при обращении к бд"
запрос
INSERT INTO `catalog` VALUES (100, 'СИСТЕМЫ ОХРАННО-ПОЖАРНОЙ СИГНАЛИЗАЦИИ', 'обеспечивают своевременное обнаружение и оповещение о пожаре и несанкционированном проникновении на объект.', 0, 'show', 0);

не выполняется,
(100-такого каталога точно нет ( поле int(8) NOT NULL auto_increment ), 0,0-это позиция и id_parent)
а
DROP TABLE `raznoe`; выполнился. ошибок то как раз не возникает.

если вместо mysql_error(); сделать mysql_error($res);
то выдает

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /home/proxyltd/public_html/admin/sql/index.php on line 21
но, скорее всего в первый раз было правильно.

запросы вида
SELECT * FROM `mainmenu` ORDER BY `pos` проходят без заминки

   
 
 автор: cheops   (11.03.2008 в 13:04)   письмо автору
 
   для: netman   (11.03.2008 в 12:54)
 

А какую ошибку выдаёт функция mysql_error() и на какой запрос?

   
 
 автор: netman   (11.03.2008 в 12:54)   письмо автору
 
 

Здравствовать всем!
Выручайте, кто знает.
У хостера нет phpmyadmin.
Надо всю базу перезаполнять, тк при первом заполнении небыло запрса set names.

Накатал небольшой скриптик (форма и обработчик). POST['sql'] (textarea) подставляется сразу в запрос.

Проблема: запрос DROP TABLE `about`; выполнился, остальные-нет
пробовал в кавычки заключать, удалять обратные и т.д.

остальные имеют вид:

CREATE TABLE `about` (
`id_about` int(8) NOT NULL auto_increment,
`action` varchar(30) NOT NULL default '',
`name` varchar(30) NOT NULL default '',
`pos` int(8) NOT NULL default '0',
PRIMARY KEY (`id_about`)
) ENGINE=MyISAM;

или
INSERT INTO `catalog` VALUES (1, 'СИСТЕМЫ ОХРАННО-ПОЖАРНОЙ СИГНАЛИЗАЦИИ', 0, 0);

посоветуйте, может настройки php какие не учел

magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off

   

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования