Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Access][PHP] Zapis do bazy, "IF NOT EXISTS"
--franz87--
post
Post #1





Goście







Witam,
Mam dwa problemy przy zapisie do bazy Access (*mdb) z poziomu skryptu PHP.

1. Tworzę tabele, i chcę zastosować IF NOT EXISTS, żeby, gdy tabela istnieje nie tworzono jej.

  1. $polaczenie = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\xampp\\htdocs\\ebayAPI\\baza.mdb", '', '');
  2. $sql = "CREATE TABLE ".$zmienna;
  3. $sql .= "IF NOT EXISTS (ID AUTOINCREMENT,";
  4. $sql .= " User VARCHAR,";
  5. $sql .= " Cena VARCHAR,";
  6. $sql .= " Ilosc VARCHAR,";
  7. $sql .= " Data VARCHAR,";
  8. $sql .= " Godzina VARCHAR,";
  9. $sql .= " Nazwa VARCHAR,";
  10. $sql .= " Numer VARCHAR";
  11. $sql .= " );";
  12. $wynik = odbc_exec($polaczenie,$sql)or die(odbc_exec());

Próbowałem dawać "IF NOT EXISTS" w różnych miejscach, ale zawsze wywala błąd.
To samo chcę zastosować do INSERT INTO przy tworzeniu rekordu, by nie dodawał dubla.Też nie działa.

2. Dałem ID typ AUTOINCREMENT, żeby rekord sam dodawał odpowiednią wartość ID, ale nie działa.
Robiłem to zostawiając przy ID pusty string.

  1. $sql = "INSERT INTO tabela (ID, User, Cena, Ilosc, Data, Godzina, Nazwa, Numer) ";
  2. $sql .= " VALUES ('', 'user', '12,99' , '5szt' , '12-05-2013, '13:00:55' , 'nazwa', 'numer);";
  3. $wynik = odbc_exec($polaczenie,$sql) or die(odbc_exec());

Jeżeli mu podam jakąś wartość ID to działa, ale ja chcę, żeby on dodawał nast wolne ID automatycznie
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
franz87
post
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Z tym typem zmiennoprzecinkowym nadal nie działa.
Zamieszczam kod.

  1. $sql = "CREATE TABLE aukcje";
  2. $sql .= " (ID AUTOINCREMENT,";
  3. $sql .= " User VARCHAR,";
  4. $sql .= " Cena NUMERIC,";
  5. $sql .= " Ilosc INTEGER,";
  6. $sql .= " Data VARCHAR,";
  7. $sql .= " Godzina VARCHAR,";
  8. $sql .= " Nazwa VARCHAR,";
  9. $sql .= " Numer INTEGER";
  10. $sql .= " );";
  11. $wynik = odbc_exec($polaczenie,$sql)or die(odbc_exec());
  12.  
  13. // Tworzy tabelę, pole "Cena" ma być zmiennoprzecinkowe


Teraz dodaje rekord:

  1. $sql = "INSERT INTO aukcje (User, Cena, Ilosc, Data, Godzina, Nazwa, Numer) ";
  2. $sql .= " VALUES ('".$user."','".$cena."','".(int)$ilosc."','".$data."','".$czas."','".$nazwa_aukcji."','".(int)$numer_aukcji."');";
  3. $wynik = odbc_exec($polaczenie,$sql) or die(odbc_exec());


Jeżeli dam echo $sql to zapisywany rekord wygląda na dobry:
  1. INSERT INTO aukcje (User, Cena, Ilosc, Data, Godzina, Nazwa, Numer) VALUES ('piotrek','8,99','1','26.05.12','12:17:00','ksiazka','11550');



Wywala błąd :
Warning: odbc_exec(): in C:\polacz.php on line 44
Warning: odbc_exec() expects at least 2 parameters, 0 given in C:\polacz.php on line 44
co wskazuje na $wynik = odbc_exec($polaczenie,$sql) or die(odbc_exec());



$user,$cena,$ilosc,$data,$czas,$nazwa_aukcji,$numer_aukcji -> to są wszystko stringi, dlatego dla $numer_aukcji i $ilosc rzutuje je na INT
Próbowałem rzutować $cena na float,double, ale to nic nie daje.


Teraz co ciekawe, jeżeli zamiast $cena dam '2,99' to wpisze do bazy 2,99
a przecież ja mu podaje to samo w $cena !

Ten post edytował franz87 25.02.2013, 13:01:17
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 09:09