Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]crone & zapytanie w sql
Forum PHP.pl > Forum > Przedszkole
agataperz
Witam,

mam taki skrypt ktory jest odpalany codziennie przez crona:

  1. include ("../serwer.php");
  2. include ("../polaczenie.php");
  3. require_once ('../inpost/inpost.php');
  4.  
  5. $machines = inpost_get_machine_list();
  6. if (count($machines)) {
  7. foreach ($machines as $machine) {
  8.  
  9. $query = "SELECT COUNT(*) FROM ehi_paczkomaty where id_paczkomatu='".$machine['name']."'";
  10. if(!$result = mysql_query($query, $db_lnk)){
  11. }
  12. while($row = mysql_fetch_row($result)){
  13. $row0 = $row[0];
  14. }
  15.  
  16. if ($row0 == '0') {
  17. $qquery="insert into ehi_paczkomaty value ('','";
  18. $qquery.=$machine['name'];
  19. $qquery.="','";
  20. $qquery.=iconv(mb_detect_encoding($machine['town']),"iso-8859-2",$machine['town']);
  21. $qquery.=", ul. ";
  22. $qquery.=iconv(mb_detect_encoding($machine['street']),"iso-8859-2",$machine['street']);
  23. $qquery.=" ";
  24. $qquery.=$machine['buildingnumber'];
  25. $qquery.="','";
  26. $qquery.=$machine['paymentavailable'];
  27. $qquery.="','";
  28. $opis1=iconv(mb_detect_encoding($machine['locationdescription']),"iso-8859-2",$machine['locationdescription']);
  29. $qquery.="$opis1','";
  30. $opis2=iconv(mb_detect_encoding($machine['paymentpointdescr']),"iso-8859-2",$machine['paymentpointdescr']);
  31. $qquery.="$opis2')";
  32. if(!$result = mysql_query($qquery, $db_lnk)){
  33. }
  34. } else {
  35. $query = "SELECT * FROM ehi_paczkomaty where id_paczkomatu='".$machine['name']."'";
  36. if(!$result = mysql_query($query, $db_lnk)){
  37. echo('Wystapil blad');
  38. }
  39. while($row = mysql_fetch_row($result)){
  40. $id = $row[1];
  41. $adres = $row[2];
  42. $karta = $row[3];
  43. $opis_lokalizacji = "$row[4]";
  44. $opis_pobrania = "$row[5]";
  45. }
  46. if ($opis_pobrania != iconv(mb_detect_encoding($machine['paymentpointdescr']),"iso-8859-2",$machine['paymentpointdescr'])) {
  47. $qquery = "update ehi_paczkomaty set opis_pobrania='".iconv(mb_detect_encoding($machine['paymentpointdescr']),"iso-8859-2",$machine['paymentpointdescr'])."' where id_paczkomatu='".$machine['name']."'";
  48. if(!$result = mysql_query($qquery, $db_lnk)){
  49. exit;
  50. }
  51. }
  52. if ($opis_lokalizacji != iconv(mb_detect_encoding($machine['locationdescription']),"iso-8859-2",$machine['locationdescription'])) {
  53. $qquery = "update ehi_paczkomaty set opis_lokalizacji='".iconv(mb_detect_encoding($machine['locationdescription']),"iso-8859-2",$machine['locationdescription'])."' where id_paczkomatu='".$machine['name']."'";
  54. if(!$result = mysql_query($qquery, $db_lnk)){
  55. exit;
  56. }
  57. }
  58. if ($karta != $machine['paymentavailable']) {
  59. $qquery = "update ehi_paczkomaty set card='".$machine['paymentavailable']."'";
  60. if(!$result = mysql_query($qquery, $db_lnk)){
  61. exit;
  62. }
  63. }
  64.  
  65. }
  66.  
  67.  
  68. }
  69. }
  70.  
  71. $qquery = "insert into ehi_crone value ('','$dzis_data $dzis_godz','aktualizacja bazy paczkomatow')";
  72. if(!$result = mysql_query($qquery, $db_lnk)){
  73. }
  74.  


i niestety zmienne $machine['locationdescription'] i $machine['paymentpointdescr'] mogą posiadać apostrof (') i niestety rozwalają mi cale zapytanie do bazy sql.
Jak mogę ominąć ten problem?
nospor
mysql_escape_string() - patrz manual
bostaf
Cytat(nospor @ 17.05.2012, 11:27:20 ) *
mysql_escape_string() - patrz manual

Lepiej mysql_real_escape_string(), bo mysql_escape_string() jest przestarzałe (od PHP 4.3, a od PHP 5.3 wywala notice). mysql_real_escape_string() jest ponadto precyzyjniejsza, bo bierze pod uwagę kodowanie bieżącego połączenia.
nospor
Jak zwał tak zwał. Chodziło mi o nakierowanie. No ale tak, mysql_real_escape_string jest poprawniejsze.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.