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

Jak włożyć do bazy danych dane z podzapytaniem używając PDO w PHP ?

Object Storage Arubacloud
0 głosów
197 wizyt
pytanie zadane 12 lutego 2021 w PHP przez mat19 Obywatel (1,580 p.)

Cześć. Mam problem z włożeniem do bazy danych. Otóż chcę włożyć do tabeli statistics id_użytkownika, datę rejestracji oraz czas rejestracji. Jeżeli włoże do bazy tylko datę i czas to wszystko działa. Problem pojawia się gdy chcę włożyć id użytkownika z tabeli users. Mam nadzieję że ktoś mi pomoże rozwiązać ten problem.

public function insert_statistics()
	{
	$field = $this->data['login'];
	$field20 = date("Y-m-d");
	$field100 = date('H:i:s');
		
	if(empty($this->validation->getErrors()))
	{
		
		
	$query = $this->database->connect()->prepare("INSERT INTO statystics(`id_user`, `date_registration`, `time_registration`) VALUES((select id from users where login = :login),:date_registration, :time_registration)");
		$query->bindParam(':login', $field, PDO::PARAM_INT); 
		$query->bindParam(':date_registration', $field20, PDO::PARAM_STR); 
		$query->bindParam(':time_registration', $field100, PDO::PARAM_STR); 	
		$query->execute();
		
	}

    }	

 

komentarz 12 lutego 2021 przez wizarddos Nałogowiec (25,930 p.)
Czy id jest ustawione jako AUTO INCREMENT?
komentarz 12 lutego 2021 przez mat19 Obywatel (1,580 p.)
Tak id w tabeli users jest ustawione na AUTO_INCREMENT
komentarz 12 lutego 2021 przez Michał Kazula Pasjonat (19,540 p.)

@mat19,

pytanie mam. A wywoływałeś tą SQLkę na bazie z jakimiś danymi? Moim zdaniem błąd leży po stronie samego zapytania

Kolega wyżej pyta o to czy pole id_user w satistics jest ustawione jako AI?

komentarz 12 lutego 2021 przez mat19 Obywatel (1,580 p.)
Pole id_user także jest ustawione jako AUTO_INCREMENT. Tak błąd leży w podzapytaniu. Oto chodzi że nie wiem jak takie zapytanie poprawnie zapisać używać PDO. Pozatym jak usunę id_user, to datę i czas wstawia, więc z pewnością błąd jest w podzapytaniu w konkretnie w jego zapisie.

1 odpowiedź

0 głosów
odpowiedź 12 lutego 2021 przez Michał Kazula Pasjonat (19,540 p.)
To błąd masz w insercie do statystyk!

Skoro pole to AI to nie można do niego nic wstawiać! Samo się wstawia. Zdejmij AI z pola iser_id i sprawdź zgodność typów user_id i id. Powinno działać.

 

PS

Załóż sobie wyłapywanie errorów i wyświetlaj je. Wtedy szybciej uda Ci się rozwiązać problem. Samodzielne
komentarz 12 lutego 2021 przez mat19 Obywatel (1,580 p.)
A może błąd polega na tym że gdy kliknę przycisk rejstruj to jedna funkcja dodaje do tabeli users dane uzytkownika, a druga funkcja w tym czasie dodaje do tabeli statystics i moze jeszcze nie znajduje tego uzytkownika.
komentarz 12 lutego 2021 przez Michał Kazula Pasjonat (19,540 p.)
Jeżeli robisz te dwie rzeczy jednym execute to jest tak jak mówisz.
komentarz 12 lutego 2021 przez mat19 Obywatel (1,580 p.)
Te dwie czynności są w 2 odzielnych funkcjach w klasie wiec i execute sa odzielne.
komentarz 12 lutego 2021 przez Michał Kazula Pasjonat (19,540 p.)
Na moje oko ten select w insercie jest zły. Tam powinien być sam select z polami. Jak siądę do kompa to coś naskrobię. Jestem na kom.
komentarz 13 lutego 2021 przez mat19 Obywatel (1,580 p.)
Ok problem rozwiązany, w bind_param powinno byc str zamiast int. Głupi błąd a tyle zamieszania.

Podobne pytania

0 głosów
5 odpowiedzi 1,721 wizyt
0 głosów
2 odpowiedzi 1,286 wizyt
0 głosów
1 odpowiedź 402 wizyt
pytanie zadane 25 czerwca 2022 w PHP przez MKolaj15 Bywalec (2,270 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!

...