|
|
|
|
для: cheops
(14.11.2006 в 00:29)
|
| Крайне занимательный скрипт.
Впечатление такое, что кроме TEXT и DATETIME, автору неарифметические типы данных не известны вообще.
Про экранирование, BLOB и кодировки можно даже не вспоминать.
Вот фрагмент из дампа.
create table resfiles (id int(11) auto_increment, fname varchar(255) , obj longblob , stamp timestamp , attribs varchar(10) , Primary key (id)) type=myisam;
|
insert into resfiles values(6, yandex.url, [InternetShortcut]
URL=http://www.yandex.ru
, 2003-01-08 05:37:00, N);
insert into resfiles values(7, ie.lnk, я╗┐21#\windows\iesample.exe, 2003-01-08 05:37:00, N);
|
Между прочим, скрипт восстановления будет считать, что в нем 4 записи.
Для того, чтобы сделать скрипт хоть сколько-нибудь полезным, я изменил в файле restore.php два места.
Фрагмент
if($describe[1]=="datetime" || $describe[1]=="text")
{
$kav[$column_num]=1;
}
else
{
$kav[$column_num]=0;
}
$column_num++;
|
на фрагмент
$type = explode('(', $describe['Type']);
$kav[$column_num++]= !in_array($type[0],
array('bit','tinyint','smallint','mediumint','int',
'bigint','float','double','decimal'));
|
и фрагмент
for($z=0; $z<$column_num; $z++)
{
if($z<($column_num-1))
{
if($kav[$z]==1)
{
$column_string=$column_string."'".$column[$z]."', ";
}
else
{
$column_string=$column_string.$column[$z].", ";
}
}
else
{
if($kav[$z]==1)
{
$column_string=$column_string."'".$column[$z]."'";
}
else
{
$column_string=$column_string.$column[$z];
}
}
}
|
на фрагмент
for($sep = '',$z=0; $z<$column_num; $z++,$sep = ',')
$column_string .= $sep . ($kav[$z] ? ("'".mysql_escape_string($column[$z])."'")
: $column[$z] );
|
Это, конечно, в целом проблемы не решает, но так хоть какое-то подобие работающего скрипта... | |
|
|