Problemy z tabelą w MySQL

0

Sorry, że takie strzasznie lamerskie ale od 3 dni się z tym męczę i nic nie działa.

Zainstalowałem krasnala, utworzyłem nowego usera (jarek), przez phpMyAdmin zrobiłem bazę danych "cwphp".

Problem jest taki, że nie mogę zrobić nowej tabelki, niby nie wyskakują błędy, ale tabeli nie ma.

Próbowałem tak:

<? mysql_connect ("localhost", "jarek", "123") or die ("Nie można się połączyć z MySQL"); mysql_select_db("cwphp") or die ("Nie mozna się połączyć z bazą cwphp"); $zapytanie = "CREATE TABLE osoby (id char(3) NOT NULL, imie char(30), lata char(3), punkty char(3), mistrzostwa char(3), PRIMARY KEY(id))"; $p=mysql_query($zaptanie); if ($p=False){echo('error');}; if ($p=True){echo('ok');}; $zapytanie = "INSERT INTO osoby VALUES(Jarek, 19, 20, 6)"; $p2=mysql_query($zaptanie); if ($p2=False){echo(' error2');}; if ($p2=True){echo(' ok2');}; $zapytanie = "SELECT imie FROM osoby WHERE imie='Jarek'"; $p3=mysql_query($zaptanie); if ($p3=False){echo(' error3');}; if ($p3=True){echo(' ok3');}; mysql_close(); ?>

Możliwe, że ja coś robię źle. Bardzo proszę o odpowiedź i najlepiej jakiś przykład prawidłowego wykonania.

0

Jeśli masz phpMyAdmina, to najprościej w nim kazać nową tabelę założyć, automatycznie wyświetli Ci wykonane zapytanie. Może sam dojdziesz, czego Ci brakuje.
//P.S. w tym tworzeniu pierwszego rekordu trochę nie tak chyba... Raczej "(...) VALUES ('', 'Jarek', '19', '20', '6')"

0

Błąd jest w zapytaniu

INSERT INTO osoby VALUES(Jarek, 19, 20, 6

Powinno być INSERT INTO osoby (nazwa_pola_imie,nazwa_pola2,nazwa_pola3,nazwa_pola4) VALUES (Jarek, 19, 20, 6);

PO drugie: w php pojedyncze '=' oznacza przypisanie, a nie porównianie (jak np w C++ lub Delphi). Dletego warunek

if ($p2=False){echo(' error2');};

ZAWSZE zwróci true (przypisanie si.ę powiodło).

POprawnie będzie

if ($p2==False){echo(' error2');};

Do tego możesz uprościć zapis stosując zapis

if (!$p2) echo(' error2');

To samo z dalszymi liniami. Do tego rada - po co stosujesz te nawiasy {}? Jeśli zadanie do wykonania jest jedno, to możesz je sobie odpuścić

W razie problemów chętnie pomogę: [email protected]

//programowanie m.in w php - www.vxcprogramming.prv.pl

0
vegat napisał(a)

Błąd jest w zapytaniu

INSERT INTO osoby VALUES(Jarek, 19, 20, 6

Powinno być INSERT INTO osoby (nazwa_pola_imie,nazwa_pola2,nazwa_pola3,nazwa_pola4) VALUES (Jarek, 19, 20, 6);
Z tego co się orientuję, to nie jest to wymóg, co najwyżej rozwiązanie polecane. Ja mam bez podawania nazw pól u siebie i działa, tylko trzeba podać wartości wszystkich pól w prawidłowej kolejności.

vegat napisał(a)

PO drugie: w php pojedyncze '=' oznacza przypisanie, a nie porównianie (jak np w C++ lub Delphi).
Akurat w C++ jest tak jak w PHP (a właściwie na odwrót): == - porównanie; = - przypisanie. Za to fakt faktem, że w Delphi = jest porównianiem, zaś := przypisaniem.

0

Dzięki za poprawienie błędów ale to nadal nie chce działać, problem jest z utworzeniem tabelki, nie można jej utworzyć, pojawia się napis "error1", co wskazuje na to, iż tabela nie została utworzona.

Może tu chodzi o ustawienie praw dostępu czy czegoś, nawet jeżeli loguję się jako root (powinny być wszystkie prawa dostępu) to nadal tabelka się nie tworzy, mogę jedynie zrobić nową bazę, ale tabeli się nie da ;(

Zmieniony kod wygląda tak:

<? mysql_connect ("localhost", "jarek", "123") or die ("Nie można się połączyć z MySQL"); mysql_select_db("cwphp") or die ("Nie mozna się połączyć z bazą cwphp"); $zapytanie = "CREATE TABLE osoby (id char(3) NOT NULL, imie char(30), lata char(3), punkty char(3), mistrzostwa char(3), PRIMARY KEY(id))"; $p=mysql_query($zaptanie); if (!$p) echo(' error1'); $zapytanie = "INSERT INTO osoby (imie,lata,punkty,mistrzostwa) VALUES (Jarek, 19, 20, 6)"; $p2=mysql_query($zaptanie); if (!$p2) echo(' error2'); $zapytanie = "SELECT imie FROM osoby WHERE imie='Jarek2'"; $p3=mysql_query($zaptanie); if (!$p3) echo(' error3'); mysql_close(); ?>
0

A próbowałeś tak jak Ci radziłem, użyć phpMyAdmina do stworzenia tej tabelki i zobaczyć, jakiej składni użył? Może jest coś, czego nie zauważyłem na pierwszy rzut oka.

0

Próbowałem, PHP MyAdmin zwrócił takie zapytanie:

CREATE TABLE osoby (
id INT NOT NULL AUTO_INCREMENT ,
imie CHAR( 30 ) NOT NULL ,
lata CHAR( 3 ) NOT NULL ,
punkty CHAR( 3 ) NOT NULL ,
mistrzostwa CHAR( 3 ) NOT NULL ,
PRIMARY KEY ( id )
);

Niestety to też nie chce działać.

0

Znaczy sam phpMyAdmin stworzył tabelkę, a z poziomu PHP tym samym zapytaniem nie możesz? Jeśli tak, to chyba musi być jakiś problem w dostępie do bazy, nie widzę innego rozwiązania...

0

To chyba jednak jest problem w dostępie do bazy. Ustawiłem sobie pełne prawa na wszystko i nadal nic nie mogę zrobić, jeżeli ktoś wie, co z tym zrobić to bardzo proszę o pomoc !!!

0

Czy ktoś mógłby mi napisać przykład, który u was działa i ja bym zobaczył jak jest u mnie?

0

U mnie takie zapytanie działa:

CREATE TABLE `menu` (
  `page_id` int(11) NOT NULL auto_increment,
  `caption` text NOT NULL,
  `czy_grafika` tinyint(1) NOT NULL default '0',
  `grafika` text,
  `link` text,
  KEY `page_id` (`page_id`)
) TYPE=MyISAM AUTO_INCREMENT=7 ;

Jest to wycinek dump'a, więc część rzeczy jest niepotrzebna, ale ważne, że działa.

0

Dzieki za odpowiedź, ale to też u mnie nie działa, chyba przeinstaluję krasnala i wtedy może zacznie chodzić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1