Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL][PostgreSQL] Odpowieniki funkcji...
Forum PHP.pl > Forum > Przedszkole
Sublove
Witam,
Do tej pory miałem bazę na Postgresie ale muszę przejść na MySQL, bo serwer szkolny padł a i muszę działać na swoim domowym który akceptuje bazy MySQL.
Teraz mam prośbę bo mam gotowe kwerendy i zapytania i nie wiem jak przerobić je na komendy MySQLa,
miałbym prośbę odnośnie tego, jak zamienić użyte poniżej funkcje na MySQL'owe odpowiedniki...


1.Wysyłanie poczty
  1. <?php
  2. echo' Wysłano';
  3. $header = "From: ". $Name . " <" . $email . ">r\n";
  4. $header .= "Content-type: text/html; charset=iso-8859-2r\n";
  5. $header .= "Content-Transfer-Encoding: 8bitr\n ";
  6. mail($recipient, $subject, $mail_body, $header);
  7. ?>


2. Dodawanie do bazy
  1. <?php
  2. $db = pg_connect("user=tomczak dbname=******** host=******** password=***** port=54321");
  3. $query = "insert into zapytanie (vin, marka, model, pojemnosc, mail, telefon)
  4.   values ('$vin','$marka1','$model1','$pojemnosc1','$mail1','$telefon1')";
  5. $result = pg_exec($db, $query);
  6. ?>



3. Zapytanie SELECET do bazy wraz z wyświetlaniem wyników w tabeli (tutaj wstawię całość kodu bo boję się że coś pominę):
  1. <?php
  2. if (isset($_POST['wyslij']) && $_POST['wyslij'] == 'Szukaj') {
  3. $db = pg_connect("user=tomczak dbname=**** host=********* password=****** port=54321");
  4. $nazwa=$_POST['nazwa'];
  5. $marka=$_POST['marka'];
  6. $model=$_POST['model'];
  7.  
  8. $blad_txt='';
  9. $blad=false;
  10.  
  11. if (strlen($nazwa)<2) {
  12. $blad_txt.='Wprowadzona nazwa częsci jest za krótka<br/>';
  13. $blad=true;
  14. }
  15.  
  16. if ($marka=='0') {
  17. $blad_txt.='Nie wybrałeś Marki, wybierz jedną z listy<br/>';
  18. $blad=true;
  19. }
  20.  
  21. if (strlen($model)<2) {
  22. $blad_txt.='Wprowadzona nazwa modelu jest za krótka<br/>';
  23. $blad=true;
  24. }
  25.  
  26. if (!$blad) {
  27.  
  28. $query = "SELECT nazwa, marka, model, roczniki, zapas FROM parts WHERE
  29. lower(nazwa) LIKE lower('%".$nazwa."%') AND
  30. lower(marka) LIKE lower('%".$marka."%') AND
  31. lower(model) LIKE lower('%".$model."%')
  32. ORDER BY nazwa";
  33.  
  34. $result = pg_exec($db, $query);
  35. if (!$result) {
  36. $errormessage = pg_errormessage($db);
  37. }
  38.  
  39. $numrows = pg_numrows($result);
  40. $row=0;
  41. if (!$numrows)
  42. { printf("<a id='inf'><b>Brak wyników wyszukiwania...</b></a><br/>Niestety nie posiadamy takiej części w bazie.<br>Skorzystaj z naszego formularza aby wysłać zapytanie o część.<br>Skontaktujemy się z Tobą tak szybko, jak będzie to możliwe<br>
  43. <form action='zapytaj.php'><input type='submit' value='Przejdź do formularza'></form>
  44. ");
  45. }
  46. else {
  47. printf ("<table width=530>");
  48. printf ("<tr>
  49.  
  50. <td height=30 align=center>Nazwa</td>
  51. <td height=30 align=center>Marka</td>
  52. <td height=30 align=center>Model</td>
  53. <td height=30 align=center>Roczniki</td>
  54. <td height=30 align=center>Zapas</td>
  55. </tr>");
  56.  
  57. do
  58. {
  59. $myrow = pg_fetch_row ($result,$row);
  60. printf ("<tr><td height=30 >%s</td>
  61. <td height=20 >%s</td>
  62. <td height=20 >%s</td>
  63. <td height=20 >%s</td>
  64. <td height=20 >%s</td>
  65. </tr>",
  66. $myrow[0], $myrow[1], $myrow[2], $myrow[3], $myrow[4]
  67.  
  68. );
  69.  
  70. $row++;
  71. }
  72.  
  73. while ($row < $numrows);
  74.  
  75. printf ("</table>");
  76. }
  77. } else {
  78. printf ("<a id='err'><b>Błąd wyszukiwania!</b></a><br/>");
  79. echo $blad_txt;
  80. }
  81. }
  82. ?>
EarthCitizen
Wszystkie funkcje do PHP odnośnie mysqla masz tutaj: http://php.net.pl/manual/pl/book.mysql.php
A podane przez Ciebie zapytania są identyczne dla obu baz. Musisz tylko zamiast pg_query dać mysql_query itp dla wszystkich funkcji, odpowiedniki masz w linku wyżej.
Sublove
Dzięki, pozamieniałem ale wystąpił błąd, otóż nie mogę wykonać finkcji mysql_num_rows(), kod mam taki:

  1. $db = mysql_connect('localhost', 'root','');
  2.  
  3. $query = "SELECT nazwa, marka, model, roczniki, zapas FROM parts WHERE lower(nazwa) LIKE lower('%".$nazwa."%') AND lower(marka) LIKE lower('%".$marka."%') AND lower(model) LIKE lower('%".$model."%')
  4. ORDER BY nazwa";
  5.  
  6. $result = mysql_query($query, $db);
  7.  
  8. $numrows = mysql_num_rows($result);


Wywala mi błąd:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\wamp\www\wyszukaj.php on line 95

Co jest źle?
nospor
masz blad zapytania. by dowiedziec sie jaki musisz to sprawdzic smile.gif
  1. <?php
  2. $result = mysql_query($query, $db) or die('Zapytanie: '.$query.' --- błąd: '.mysql_error());
  3. ?>
Sublove
Dziękuję smile.gif

Wyświetla mi błędy:

Warning: Division by zero in D:\wamp\www\wyszukaj.php on line 82

tyczy się to linijek:

lower(nazwa) LIKE lower('%".$nazwa."%') AND
lower(marka) LIKE lower('%".$marka."%') AND
lower(model) LIKE lower('%".$model."%')
ORDER BY nazwa';

Wcześniej miałem to zapytanie na Postgresie i działało, teraz pewnie coś ze składnią... ale nie wiem co sad.gif
nospor
blad co dostajesz ma sie nijak do kodu co ci podalem. Twoj blad to blad php a nie mysql smile.gif
Sublove
Zapytanie: SELECT nazwa, marka, model, roczniki, zapas FROM parts WHERE lower(nazwa) LIKE lower('%asdasd%') AND lower(marka) LIKE lower('%Honda%') AND lower(model) LIKE lower('%asdas%') ORDER BY nazwa --- błąd: No database selected

Ale to mnie dziwi bo mam to:

  1. <?php
  2. $db = mysql_connect('localhost', 'root','');
  3. mysql_select_db('Test',$db);
  4. ?>
nospor
  1. <?php
  2. $db = mysql_connect('localhost', 'root','') or die(mysql_error());
  3. mysql_select_db('Test',$db) or die(mysql_error());
  4. ?>

Czy przy kazdej linijce musze sam ci to dopisywac?
melkorm
A zobacz co Tobie zwraca mysql_select_db() smile.gif
Sublove
Unknown database 'test'

Ale przecież mam taką bazę, wchodzię w SQLite manager i widzę po lewej że jest ...


nospor
Cytat
wchodzię w SQLite manager
A ten sqllite laczy sie do bazy sqllite czy do bazy mysql? Bo ty w php laczysz sie do bazy mysql winksmiley.jpg
Sublove
a ten SQllite manager to nie jest jakaś nakładka na MySQL poprostu?
Jeżeli to są dwi inne bajki to nie rozumie... W Wampie jest MySQL a powyżej jest SQllite manager... tzn że są różne dwie bazy? Jak w takim razie stworzyć jakąś w MySQL? Nie ma jakiegoś kreatora?

Juz mam.... ale dałem ciała, wstyd jak nic! smile.gif
php my admin.... widzę teraz biggrin.gif

i mam znów problem, wszystko już gra, bazę ma MySQL zrobiłem, nazwa bazy i tabeli się zgadza, wszystko sprawdziłem lecz nie odnajduje mi wyników zapytania:

  1. $query = "SELECT nazwa, marka, model, roczniki, zapas FROM parts WHERE lower(nazwa) LIKE lower('%".$nazwa."%') AND lower(marka) LIKE lower('%".$marka."%') AND lower(model) LIKE lower('%".$model."%')
  2. ORDER BY nazwa";
  3.  
  4. result = mysql_query($query, $db);
  5. IF (!$result) {
  6. $errormessage = mysql_error($db);
  7. }
  8.  
  9. $numrows = mysql_num_rows($result);
  10. $row=0;
  11. IF (!$numrows)
  12. { printf("<a id='inf'><b>Brak wyników wyszukiwania...</b></a><br/>Niestety nie posiadamy takiej części w bazie.<br>Skorzystaj z naszego formularza aby wysłać zapytanie o część.<br>Skontaktujemy się z Tobą tak szybko, jak będzie to możliwe<br>
  13. <form action='zapytaj.php'><input type='submit' value='Przejdź do formularza'></form>
  14. ");
  15. }


wynik jest (!$numrows) bo wychodzi z IFa do tego komunikattu co jest powyżej. Zachowuje się jakby nie znalazł rekordu w bazie, żadnych błędów nie wyswietla nawet po dodaniu die*** może to zapytanie jest złe?
Zmienne globalne są włączone bo coś się w POST wysysła napewno - wcześniej sprawdziłby to inny IF i wywalił inny stosowny komunikat. A tak jest to wiadomość o braku rekordów... co jest grane?
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.