Nejste přihlášen/a.
Ahoj všem,
pokouším se nahrávat data z textového souboru ve kterém je uložena procedura pro MySQL.
Buď to na mne vyhodí chybu, že je SQL dotaz prázdný nebo že mám prázdný znak v dotazu.
Skript je pro prestashop.
php soubor, který nahrává txt soubor z FTP:
<?php</p> <p><!--?php</div--></p> <p>include '../config/settings.inc.php';</p> <p>include '../config/defines.inc.php';</p> <p>include '../config/config.inc.php';</p> <p> </p> <p>$connection = mysqli_connect(_DB_SERVER_,_DB_USER_,_DB_PASSWD_) or die(mysqli_error());</p> <p>mysqli_select_db($connection,_DB_NAME_) or die(mysql_error());</p> <p> </p> <p>$file = fopen("import.txt", "r"</p> <p>while(!feof($file)){</p> <p>$line = fgets($file);</p> <p>print $line;</p> <p>$query = $line;</p> <p>$result = mysqli_query($connection,$query) or die(mysqli_error($connection));</p> <p>$file = fclose;</p> <p>}</p> <p>?>
Dále mám soubor s procedurou "import.txt":
DROP PROCEDURE IF EXISTS select_or_insert $$</p> <p>create procedure select_or_insert()</p> <p>begin</p> <p>IF EXISTS (select * from `product_sn` where `serial_number`='614000002053') THEN</p> <p>UPDATE `product_sn`</p> <p>SET `date_upd`= NOW()</p> <p>WHERE `serial_number`='614000002053';</p> <p>ELSE</p> <p>INSERT INTO `product_sn` (`id`, `id_product`, `product_code`, `id_reference`, `applied`, `serial_number`, `date_add`, `date_upd`) VALUES('','1','ABCDE',NULL,'0','614000002053',NOW(),NOW());</p> <p>END IF;</p> <p>IF EXISTS (select * from `product_sn` where `serial_number`='023942433262') THEN</p> <p>UPDATE `product_sn`</p> <p>SET `date_upd`= NOW()</p> <p>WHERE `serial_number`='023942433262';</p> <p>ELSE</p> <p>INSERT INTO `product_sn` (`id`, `id_product`, `product_code`, `id_reference`, `applied`, `serial_number`, `date_add`, `date_upd`) VALUES('','2','FGHIJ',NULL,'0','023942433262',NOW(),NOW());</p> <p>END IF;</p> <p>END $$</p> <p> </p> <p>CALL select_or_insert();
Kde je prosím chyba.
Díky za náměty.
Zde s tím nahráváním kódu je a bude vždy problém.
Opravuji "CODE"
<?php include '../config/settings.inc.php'; include '../config/defines.inc.php'; include '../config/config.inc.php'; $connection = mysqli_connect(_DB_SERVER_,_DB_USER_,_DB_PASSWD_) or die(mysqli_error()); mysqli_select_db($connection,_DB_NAME_) or die(mysql_error()); $file = fopen("import.txt", "r" while(!feof($file)){ $line = fgets($file); print $line; $query = $line; $result = mysqli_query($connection,$query) or die(mysqli_error($connection)); $file = fclose; } ?>
SQL procedura v souboru import.txt
DROP PROCEDURE IF EXISTS select_or_insert $$ create procedure select_or_insert() begin IF EXISTS (select * from `product_sn` where `serial_number`='614000002053') THEN UPDATE `product_sn` SET `date_upd`= NOW() WHERE `serial_number`='614000002053'; ELSE INSERT INTO `product_sn` (`id`, `id_product`, `product_code`, `id_reference`, `applied`, `serial_number`, `date_add`, `date_upd`) VALUES('','1','ABCDE',NULL,'0','614000002053',NOW(),NOW()); END IF; IF EXISTS (select * from `product_sn` where `serial_number`='023942433262') THEN UPDATE `product_sn` SET `date_upd`= NOW() WHERE `serial_number`='023942433262'; ELSE INSERT INTO `product_sn` (`id`, `id_product`, `product_code`, `id_reference`, `applied`, `serial_number`, `date_add`, `date_upd`) VALUES('','2','EFGHI',NULL,'0','023942433262',NOW(),NOW()); END IF; END $$ CALL select_or_insert();
Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.