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

Zmienne w zapytaniu do bazy danych MySql w PHP.

Object Storage Arubacloud
+3 głosów
4,282 wizyt
pytanie zadane 10 kwietnia 2015 w PHP przez Hatter Gaduła (3,180 p.)
Cześć,

tworzę pewną stronę internetową już nie tylko z frontedem ale przyszedł czas na backend. Moim problemem jest użycie zmiennych w zapytaniu do bazy danych MySql. Był bym wdzięczny za podanie jakiegoś przykładu z tym co opisałem powyżej.

4 odpowiedzi

+2 głosów
odpowiedź 10 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 12 kwietnia 2015 przez Hatter
 
Najlepsza

Jeśli masz już jakiś kod to pokaż go, wtedy pomożemy Ci coś tam wprowadzić a jeśli nie tylko po prostu chcesz jakiś przykład to proszę bardzo :)

$imie='Jan';
$nazwisko='Kowalski';
$wiek=20;

//zakładam że pod zmienną "baza" jest nawiązane połączenie z bazą
$baza->query("INSERT INTO `tabela` (`imie`, `nazwisko`, `wiek`) VALUES ('{$imie}', '{$nazwisko}', {$wiek})");

Ja to robię tak, chociaż są też inne sposoby. Można np. robić też tak:

$baza->query("INSERT INTO `tabela` (`imie`, `nazwisko`, `wiek`) VALUES ('$imie', '$nazwisko', $wiek)");

albo tak:

$baza->query("INSERT INTO `tabela` (`imie`, `nazwisko`, `wiek`) VALUES ('".$imie."', '".$nazwisko."', ".$wiek.")");

Każdy z wyżej zaprezentowanych przykładów powinien działać prawidłowo :)

0 głosów
odpowiedź 10 kwietnia 2015 przez Hatter Gaduła (3,180 p.)
	echo "1";
	$title = $_GET['title'];
	$desc  = $_GET['desc']; 
	$type  = $_GET['type'];  
	$img   = $_GET['img']; 
	$link  = $_GET['auction'];
	echo "2";
	$connection = mysqli_connect($server, $username, $password, $database);
	echo "3";
	if(mysqli_connect_errno())
	{
		echo "4";
		echo 'Błąd połączenia #16' . mysqli_connect_error();
	}
	$queryINTO = "INSERT INTO 'aukcje' ('tytul', 'opis', 'typ', 'zdjecie', 'odnosnik') VALUES ('".$title"', '".$desc"', '".$type"', '".$img"', '".$link.")";
	echo "5";
	if(mysqli_query($connection, $queryINTO))
	{
		echo "Dodano rekord!";
	}
	else
	{
		echo "Coś poszło nie tak ;(";
		exit();
	}
	echo "6";
	mysqli_close($connection);
	echo "7";

Żadne które podałeś nie działa.

komentarz 10 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)
edycja 10 kwietnia 2015 przez Arkadiusz Waluk

W tej lini:

$queryINTO = "INSERT INTO 'aukcje' ('tytul', 'opis', 'typ', 'zdjecie', 'odnosnik') VALUES ('".$title"', '".$desc"', '".$type"', '".$img"', '".$link.")";

masz błąd - brakuje kropek czyli łączników zmiennych i jeszcze jednego apostrofu za zmienną link. Powinno być tak:

$queryINTO = "INSERT INTO `aukcje` (`tytul`, `opis`, `typ`, `zdjecie`, `odnosnik`) VALUES ('".$title."', '".$desc."', '".$type."', '".$img."', '".$link."')";

Podaj jak wstawiałeś inne możliwości to wtedy będę w stanie zobaczyć czy jest dobrze :)

Sprawdź czy teraz będzie działać

A jeszcze jedno. Sprawdź czy na pewno masz taką tabelę i takie komórki - czasem może się zdarzyć gdzieś jakaś głupia literówka ;)

A no i jeszcze jedno - jeśli to jest Twój cały kod to brakuje Ci podstawy czyli zabezpieczenia przed SQL Injection (włamanie do bazy przez odpowiednią manipulacje wpisanymi do np. formularza danymi).

0 głosów
odpowiedź 10 kwietnia 2015 przez Hatter Gaduła (3,180 p.)

Tak wygląda moja baza danych. Żadnej literówki nie miałem w kodzie.

http://www.tinypic.pl/thiu7to5tbxf

Jakieś dziwne te zdjęcia się tutaj dodają.

komentarz 10 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)

A czy ten kod, który podałem wyżej nadal nie działa:

$queryINTO = "INSERT INTO `aukcje` (`tytul`, `opis`, `typ`, `zdjecie`, `odnosnik`) VALUES ('".$title."', '".$desc."', '".$type."', '".$img."', '".$link."')";

Zastanawia mnie jeszcze jedna rzecz. Co z ID? Bo widzę, że masz w bazie taką komórkę, ale nie dodajesz jej przez zapytanie. Domyślam się, że pewnie chiałeś aby ID wstawiało się samo ale nie widzę abyś to zrobił (wtedy na widoku struktury w kolumnie "Dodatkowo" przy ID powinno być AUTO_INCREMENT a na powyższym screenie tak nie ma). Sprawdź to jeszcze bo ustawione masz że ID nie może być puste a mam wrażenie, że nigdzie go nie podajesz ani nie jest ono wstawiane automatycznie i dlatego zapytanie nie wchodzi.

komentarz 10 kwietnia 2015 przez Hatter Gaduła (3,180 p.)
Problemem było pole ID które nie było ustawione jako klucz podstawowy. Nie ustawiłem go ponieważ nie widziałem opcji "Auto increment" - zamiast tego było napisane "A.I" ;)

Dziękuje jeszcze raz serdecznie. Jeżeli możesz podaj jakieś linki co do zabezpieczenia skryptów przed wstrzykiwaniem.
komentarz 10 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)

Myślę, że w zupełności wystarczy jak obejrzysz ostatni film z PHP pana Mirosława. Możesz obejrzeć cały, aby nauczyć się więcej o sesjach i logowaniu ale pod tym linkiem ustawiłem Ci moment, w którym zaczyna się o SQL injection.

https://youtu.be/Pp578w7C9hE?t=1h19m48s

Lepiej już chyba nie da się tego wytłumaczyć - wszystko dokładnie omówione i nawet pokazane jak niebezpieczny może być niezabezpieczony skrypt. Także tylko siadać i oglądać! laugh

–1 głos
odpowiedź 10 kwietnia 2015 przez Boshi VIP (100,240 p.)
$queryINTO = "INSERT INTO `aukcje` ('tytul', 'opis', 'typ', 'zdjecie', 'odnosnik') VALUES ('$title', '$desc', '$type', '$img', '$link')";

 

komentarz 10 kwietnia 2015 przez Boshi VIP (100,240 p.)
Oczywiście nie jest to bezpieczne.
komentarz 10 kwietnia 2015 przez Hatter Gaduła (3,180 p.)
Czemu to nie jest bezpieczne?
komentarz 10 kwietnia 2015 przez Hatter Gaduła (3,180 p.)
Nadal wyświetla się "Coś poszło nie tak ;("
komentarz 10 kwietnia 2015 przez Boshi VIP (100,240 p.)
To wrzuć to zapytanie do np php my admin czy innego  validatora i sprawdź, albo var dumpem... gdzieś masz literówkę.

Niebezpieczne bo  nie chroni przed SQL injection- brak bindowania.

Podobne pytania

0 głosów
3 odpowiedzi 739 wizyt
0 głosów
1 odpowiedź 341 wizyt
pytanie zadane 15 czerwca 2015 w PHP przez mopatowicz Użytkownik (560 p.)
+2 głosów
1 odpowiedź 288 wizyt
pytanie zadane 26 czerwca 2015 w PHP przez makoso Mądrala (7,380 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 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!

...