Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Problem z dodaniem json_encode do bazy danych
lekosm2
post 1.10.2020, 20:33:13
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 9.10.2015

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


Hej, chciałbym zapisać tablicę w formie json_encode do bazy danych. Niestety podczas próby dodania jej do bazy danych otrzymuję błąd.
Fragment kodu wygląda tak:
  1. if (($result = $db->query('SELECT id, groupId, groupClients FROM premium_channels'))->rowCount() > 0)
  2. {
  3. foreach($result->fetchAll(\PDO::FETCH_ASSOC) as $premium)
  4. {
  5. $clientsGroup = [];
  6.  
  7. $serverGroupClientList = $ts3->get('serverGroupClientList', [$premium['groupId']]);
  8. foreach($serverGroupClientList as $client)
  9. {
  10. $clientsGroup[] = $client['cldbid'];
  11. }
  12.  
  13. $clientsGroup = json_encode($clientsGroup);
  14.  
  15. if($premium['groupClients'] != $clientsGroup)
  16. {
  17. $db->query('UPDATE premium_channels SET groupClients = '.$clientsGroup.' WHERE id = '.$premium['id'].'');
  18. }
  19. }
  20. }

Gdy uruchamiam kod mam następujący błąd w konsoli:
[Database] - Error, błędne zapytanie: `UPDATE premium_channels SET groupClients = ["1179","1178","1119","1089","1117","1092","1097","1320","1115"] WHERE id = 18`

A gdy próbuję ręcznie wpisać zapytanie w phpmyadmin to ukazuje się takie coś:



Pomoże ktoś? smile.gif
Go to the top of the page
+Quote Post
viking
post 2.10.2020, 01:51:44
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


No i słusznie, brakuje odpowiedniego quotowania. Najlepiej używaj prepare i bindowania


--------------------
Go to the top of the page
+Quote Post
Tomplus
post 2.10.2020, 15:25:31
Post #3





Grupa: Zarejestrowani
Postów: 1 836
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

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


Jakbyś dodał pojedyncze apostrofy to problemu nie miałbyś, dodając json w kodzie SQL, jeżeli tak robisz, pamiętaj że kod JSON to string, a ciągi znaków należy okalać apostrofami pojedynczymi ' lub podwójnymi " - w zależności od tego jaki kod dostarczasz.

np. "I'm Bond, James Bond." lub 'Obiekt ma 5" długości.'
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 15:15