|
|
|
| Здравствовать всем!
Выручайте, кто знает.
У хостера нет 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 | |
|
|
|
|
|
|
|
для: netman
(11.03.2008 в 12:54)
| | А какую ошибку выдаёт функция mysql_error() и на какой запрос? | |
|
|
|
|
|
|
|
для: 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` проходят без заминки | |
|
|
|
|
|
|
|
для: netman
(11.03.2008 в 13:36)
| | Кстати на сайте админка есть, так вот она работает (после того как admin базу обновил). Может проблема в textarea? Из-за символа перевода строки напр. | |
|
|
|
|
|
|
|
для: netman
(11.03.2008 в 16:05)
| |
эта функция возвращает ошибку а не печатает ее
и в эту функцию нужно (можно) отправлять не результат запроса а линк коннекта | |
|
|
|
|
|
|
|
для: 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-запрос. | |
|
|
|
|
|
|
|
для: 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м | |
|
|
|
|
|
|
|
для: netman
(12.03.2008 в 02:56)
| | А в phpMyAdmin кавычки тоже экранированы? Или это магические кавычки делают? Попробуйте не через HTML-форму загружать дамп, а залить его через FTP и получить содержимое при помощи функции file_get_contents(); | |
|
|
|
|
|
|
|
для: cheops
(12.03.2008 в 11:54)
| | Это магические кавычки.
file_get_contents() как я понимаю вернет строку, а ее уже в запрос?
Люди которым делаю не особо разбираются и, скорее всего, мне не один раз позвонят. Хотел просто чтоб из любого места можно было с бд работать.
а ведь файл можно также через форму загрузить, а уже потом file_get_contents()? | |
|
|
|