• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

tworzenie rekordów w MYSQL

Object Storage Arubacloud
0 głosów
506 wizyt
pytanie zadane 7 września 2017 w SQL, bazy danych przez Maciek Kornacki Nowicjusz (220 p.)

Cześć, mam kawałek kodu do sprawdzenia, próbuję stworzyć formularz który będzie przesyłał dane do bazy.
Niestety ciągle pojawia się błąd.


// czy istnieje tabela
	$myTable = "osoby";
	$myDb = "moja";

// Tworzenie nowej tabeli jeśli nie istnieje tabela o takiej nazwie
	$newTable = "CREATE TABLE IF NOT EXISTS $myTable(
		ID INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
		imie VARCHAR(30) NOT NULL,
		email VARCHAR(50) NOT NULL,
		tel INT(9)
	)";
	$selectDb = mysql_select_db($myDb, $connect);
	$createNewTable = mysql_query($newTable);

	if($createNewTable){
		echo "Utworzono tabele";
	}else echo "Nie utworzono tabeli". mysql_error();

//wybieramy bazę danych
	$selectDb = mysql_select_db($myDb, $connect);
	if(!$selectDb){
		echo "Nie wybrano bazy danych" . mysql_error();
	};

// Dodajemy rekordy w tabeli	
	$addRecord = mysql_query("INSERT INTO $myTable (imie, email, tel) VALUES ($imie, $email, $tel)"); //Tu gdzieś chyba jest błąd
	if($addRecord){
		echo "zostałeś dodany do bazy danych: $myDb";
	}else echo "\nNie zostałeś dodany do bazy danych". mysql_error();

	mysql_close($connect);
?>

Po wczytaniu kodu wyświetla się komunikat:

Nie zostałeś dodany do bazy danychYou have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@gmail.com, 666666666)' at line 1

Może jest to problem z znakiem @, typ jest ustawiony na VARCHAR. 

Wcześniej w kodzie skrypt sprawdza poprawność adresu e-mali poprzez filter_var($email, FILTER_VALIDATE_EMAIL) i telefonu, w tamtym przypadku, to co wpisuje w formularzu przechodzi.

Pozdrawiam

1 odpowiedź

0 głosów
odpowiedź 7 września 2017 przez xandros Nałogowiec (29,450 p.)

Na starcie musisz zmienić biblioteke obslugującą sqla, bo ta, która używasz jest przestarzała. Z mysql na mysqli albo PDO.

Rozwiązaniem twojego problemu może być bindowanie parametrów:

http://php.net/manual/pl/pdostatement.bindparam.php

http://php.net/manual/pl/mysqli-stmt.bind-param.php

komentarz 8 września 2017 przez Maciek Kornacki Nowicjusz (220 p.)
Już się nie używa mysql? Super, nie potrzebnie tracę czas na nią.

Sprawdziłem linki, fajne, ciekawe ale teraz od początku muszę przyswajać PDO.

Nie ma jakiegoś prostszego sposobu na poprawę tego kodu. bindowanie parametrów jest dla mnie nowym pojęciem.
komentarz 8 września 2017 przez xandros Nałogowiec (29,450 p.)

Jest, ale mysql został wyłączony z php przez to, że jest bardzo dziurawy. Niebezpiecznie jest go używać.

Jak już się przyzwyczaisz do PDO, zobaczysz, że to była dobra decyzja. Jest w uj bezpieczniejszy i o wiele łatwiej się nim posługuje.

Jeśli masz problem z przeniesieniem kodu z mysql do PDO\mysqli, znaczy, że masz coś źle zrobione. Musisz przewarstwować aplikacje. Pochowaj connecty/requesty do funkcji/metod i jak np. bedziesz zmieniał, to tylko zmienisz wnętrze funkcji/metody. Tylko pamiętaj, żeby output był zawsze taki sam (polecam na początek fetchassoc).

Alternatywa: Możesz użyć mysql_real_escape_string na każdej zmiennej, która wprowadzasz do query. (chodzi o parametry, nie nazwe bazy lub tabele). Ale tak jak mówiłem: mysql nie jest bezpiecznym rozwiązaniem.

komentarz 8 września 2017 przez Maciek Kornacki Nowicjusz (220 p.)
Już się wziąłem za PDO, faktycznie z tego co do tej pory wyczytałem jest trochę łatwiejsze.

Dzięki za pomoc

Podobne pytania

+1 głos
2 odpowiedzi 1,851 wizyt
0 głosów
1 odpowiedź 1,121 wizyt
0 głosów
2 odpowiedzi 13,373 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...