|
|
|
|
|
для: Денис
(15.09.2005 в 18:03)
| | Чего-то не очень понятно... | |
|
|
|
|
|
|
|
для: cheops
(15.09.2005 в 16:50)
| | сделал немного по другому.
if ($plural_query != "")
{
// open file and read in buffer
$fp = fopen($plural_query,"rb");
$bufer = fread($fp,filesize($plural_query));
fclose($fp);
$quer = explode(";", $bufer);
unset($quer[sizeof($quer) - 1]);
//$query = trim($plural_query);
foreach($quer as $query)
{
//$query = trim($query);
if(!mysql_query($query))
{
exit(mysql_error());
}
else
echo "Your SQL-query has been executed successfully"."<br>";
}
}
|
Немного коряво, но работает. Нашел ошибку в другом.
когда в окне для одиночного запроса написать тот же самый скрипт, который, скажем, используется в файле(который мы можем загрузить и выполнить - и все запросы выполнятся успешно). В одиночном случае странная ошибка: указывает, что в sql-запросе есть ошибка, даже строку указывает. Тот же самый запрос из файла! Он реагирует на размер запроса? как это обойти? | |
|
|
|
|
|
|
|
для: Денис
(15.09.2005 в 15:07)
| | А через функцию trim() запросы пропускали? | |
|
|
|
|
|
|
|
для: cheops
(15.09.2005 в 14:00)
| | поспешил с ответом. результат тот же. для ясности - вот скрипт
if($REQUEST_METHOD=="POST")
{
$dblocation = $_POST['host'];
$dbuser = $_POST['name'];
$dbpasswd = $_POST['password'];
$dbname = $_POST['databasename'];
$query = $_POST['query'];
$query = trim($query);
$quer = trim($quer);
$plural_query = $_FILES['plural_query']['tmp_name'];
if($dblocation !="" && $dbuser !="" && $dbname !="")
{
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx)
{
exit( "<P>Server database not access.</P>" );
}
if (! @mysql_select_db($dbname,$dbcnx) )
{
exit( "<P>Database not disclosure.</P>" );
}
if($query != "")
{
if(!mysql_query($query))
{
exit(mysql_error());
}
else
echo "Your SQL-query has been executed successfully";
//refresh();
}
if ($plural_query != "")
{
// open file and read in buffer
$fp = fopen($plural_query,"rb");
$bufer = fread($fp,filesize($plural_query));
fclose($fp);
$quer = explode(";", $bufer);
foreach($quer as $query)
{
if(!mysql_query($query))
{
exit(mysql_error());
}
else
echo "Your SQL-query has been executed successfully";
}
}
}
else
{
echo "You inputing data incorrect";
exit;
}
}
|
что не так и почему он в результате запроса пишет:
Your SQL-query has been executed successfullyQuery was empty не пойму. если отключить error() - не выводит, но страховки никакой | |
|
|
|
|
|
|
|
для: cheops
(15.09.2005 в 14:00)
| | наконец - то! свершилось :-), спасибо большое | |
|
|
|
|
|
|
|
для: Денис
(15.09.2005 в 11:17)
| | 1) Нет ли на странице ещё функций mysql_query()?
2) Выведите дамп массива $quer - есть в нём пустые строки?
<?php
echo "<pre>";
print_r($quer):
echo "</pre>";
?>
|
3) Воможно так пробелы - прогоните $query через trim
<?php
foreach($quer as $query)
{
if(!empty($query)) // или if($query != "")
{
$query = trim($query);
if(!mysql_query($query))
{
exit(mysql_error());
}
}
else
{
exit();
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(14.09.2005 в 21:46)
| | Если цикл должен выглядеть вот так:
foreach($quer as $query)
{
if(!empty($query)) // или if($query != "")
{
if(!mysql_query($query))
{
exit(mysql_error());
}
}
else
{
exit();
}
}
|
то результат тот же.
Query was empty | |
|
|
|
|
|
|
|
для: Денис
(14.09.2005 в 20:09)
| | То, что запрос пуст связано с тем, что последний элемент массива пустой - это ничего страшного, просто добавьте в foreach проверку не является ли $query - пустой строкой, и если это так, просто не выполняйте запрос. | |
|
|
|
|
|
|
|
для: cheops
(14.09.2005 в 13:45)
| | создал скрипт, работает, но есть одна неточность в выполнении.
если в скрипте
// open file and read in buffer
$fp = fopen($plural_query,"rb");
$bufer = fread($fp,filesize($plural_query));
fclose($fp);
$quer = explode(";", $bufer);
foreach($quer as $query)
{
if(!mysql_query($query))
{
exit(mysql_error());
}
}
|
строка $quer = explode(";", $bufer); выполняет все правильно, запрос выполняется и таблица в базе данных создается, то при этом mysql_error() ошибку что запрос пуст!
Если эту строку заменить на
$quer = preg_split("|\);\r\n|", $bufer); то запрос не выполняется, на этот раз mysql_error() ругается вот так:
You have an error in your SQL syntax near '; ' at line 15, т.е. на последнюю строку
Сам запрос следующего содержания:
CREATE TABLE abc(
id_author int(6) NOT NULL auto_increment,
name text,
passw text,
email text,
url text,
iñq text,
about text,
photo text,
time datetime default NULL,
last_time datetime default NULL,
themes int(10) default NULL,
statususer int(2) default NULL,
PRIMARY KEY (id_author)
) TYPE=MyISAM;
|
Проблема, скорее всего в регулярном выражении? Если да, то почему тогда в первом варианте все в норме, но выдает такую странную ошибку, запрос ведь выполняется(во втором случае - нет)? | |
|
|
|
|
|
|
|
для: Денис
(14.09.2005 в 11:27)
| | Вам нужно только его содержимое и только один раз, прочитайте его прямо из временной папки с непонятным названием и забудьте про него - далее можно работать уже с его содержимым. | |
|
|
|
|