Prázdný a chybný SQL dota_z

Od: Datum: 10.07.16 09:47 odpovědí: 1 změna: 10.07.16 09:56
avatar

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:

  1. <?php</p>
  2. <p><!--?php</div--></p>
  3. <p>include '../config/settings.inc.php';</p>
  4. <p>include '../config/defines.inc.php';</p>
  5. <p>include '../config/config.inc.php';</p>
  6. <p> </p>
  7. <p>$connection = mysqli_connect(_DB_SERVER_,_DB_USER_,_DB_PASSWD_) or die(mysqli_error());</p>
  8. <p>mysqli_select_db($connection,_DB_NAME_) or die(mysql_error());</p>
  9. <p> </p>
  10. <p>$file = fopen("import.txt", "r");</p>
  11. <p>while(!feof($file)){</p>
  12. <p>$line = fgets($file);</p>
  13. <p>print $line;</p>
  14. <p>$query = $line;</p>
  15. <p>$result = mysqli_query($connection,$query) or die(mysqli_error($connection));</p>
  16. <p>$file = fclose;</p>
  17. <p>}</p>
  18. <p>?>

Dále mám soubor s procedurou "import.txt":

  1. DROP PROCEDURE IF EXISTS select_or_insert $$</p>
  2. <p>create procedure select_or_insert()</p>
  3. <p>begin</p>
  4. <p>IF EXISTS (select * from `product_sn` where `serial_number`='614000002053') THEN</p>
  5. <p>UPDATE `product_sn`</p>
  6. <p>SET `date_upd`= NOW()</p>
  7. <p>WHERE `serial_number`='614000002053';</p>
  8. <p>ELSE</p>
  9. <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>
  10. <p>END IF;</p>
  11. <p>IF EXISTS (select * from `product_sn` where `serial_number`='023942433262') THEN</p>
  12. <p>UPDATE `product_sn`</p>
  13. <p>SET `date_upd`= NOW()</p>
  14. <p>WHERE `serial_number`='023942433262';</p>
  15. <p>ELSE</p>
  16. <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>
  17. <p>END IF;</p>
  18. <p>END $$</p>
  19. <p> </p>
  20. <p>CALL select_or_insert();

Kde je prosím chyba.

Díky za náměty.


Seznam odpovědí:
 
moment čekejte prosím, probíhá přenos dat...
Zobrazení struktury odpovědí v otázce
Skrytí struktury odpovědí v otázce
Zobrazení struktury odpovědí v otázce

 

Odpovědi na otázku:
Datum: 10.07.16 09:56
avatar

Zde s tím nahráváním kódu je a bude vždy problém.

Opravuji "CODE"

  1. <?php
  2. include '../config/settings.inc.php';
  3. include '../config/defines.inc.php';
  4. include '../config/config.inc.php';
  5.  
  6. $connection = mysqli_connect(_DB_SERVER_,_DB_USER_,_DB_PASSWD_) or die(mysqli_error());
  7. mysqli_select_db($connection,_DB_NAME_) or die(mysql_error());
  8. $file = fopen("import.txt", "r");
  9. while(!feof($file)){
  10. $line = fgets($file);
  11. print $line;
  12. $query = $line;
  13. $result = mysqli_query($connection,$query) or die(mysqli_error($connection));
  14. $file = fclose;
  15. }
  16. ?>

SQL procedura v souboru import.txt

  1. DROP PROCEDURE IF EXISTS select_or_insert $$
  2. create procedure select_or_insert()
  3. begin
  4. IF EXISTS (select * from `product_sn` where `serial_number`='614000002053') THEN
  5. UPDATE `product_sn`
  6. SET `date_upd`= NOW()
  7. WHERE `serial_number`='614000002053';
  8. ELSE
  9. 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());
  10. END IF;
  11. IF EXISTS (select * from `product_sn` where `serial_number`='023942433262') THEN
  12. UPDATE `product_sn`
  13. SET `date_upd`= NOW()
  14. WHERE `serial_number`='023942433262';
  15. ELSE
  16. 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());
  17. END IF;
  18. END $$
  19. CALL select_or_insert();

 

 

Přihlásit se k odběru odpovědí z této otázky:

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

 
Copyright © 2004-2016 Poradna Poradte.cz. Všechna práva na poradně Poradte.cz vyhrazena.