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

Dodawanie do MySQL rekordu przez PHP zawierającego kod HTML.

–1 głos
109 wizyt
pytanie zadane 12 kwietnia 2020 w PHP przez ellonardo Nowicjusz (120 p.)

Witam, mam taki problem.
Chcę na swojej stronie aby administratorzy mogli dodawać "posty", które są tworzone poprzez textarea, w którym wpisują kod HTML. Wszystko jest przekazywane do odpowiedniego pliku, który zbiera te dane (POST) i próbuje dodać rekord do bazy MySQL i tu pojawia się problem.
W jaki sposób mogę stworzyć instrukcję SQL, która pozwoliłaby mi utworzyć nowy rekord, gdzie w zmiennej mam takie znaki jak np. " ' [ { } ] <> ! . itp.

Plik testowy, w którym utworzyłem skrypt.

<?php
require_once("../cfg.php");

$title="Test";
$nameuser="";
$post = "<b>Pogrubienie</b> <i>kursywa</i> <u>podkreślenie</u> 'apostrofy' cudzysłowy";
$aimg="img/1.png";
$badge="Test";
$date=date("Y-d-m H:i:s");
$country="Test";
$photo="Test";

$sql='INSERT INTO updates
VALUES (NULL,"'.$title.'","'.$post.'","'.$photo.'","'.$aimg.'","'.$country.'","'.$date.'","'.$badge.'","'.$nameuser.'")';

$conn->query($sql);
?>

$conn jest już w cfg, a strona po wykonaniu tego skryptu po prostu nie wyrzuca żadnego błędu ni nic.

2 odpowiedzi

+1 głos
odpowiedź 12 kwietnia 2020 przez adrian17 Ekspert (306,660 p.)
Żeby poprawnie obsłużyć zapytania z kompletnie dowolnymi stringami, powinieneś użyć prepared statement. Ogólnie nigdy nie powinieneś sklejać ręcznie zapytań łącząc stringi :(
–2 głosów
odpowiedź 12 kwietnia 2020 przez Bartx Bywalec (2,100 p.)
Jeśli chcesz wstawić wartości do tabeli to musisz określić nazwę kolumn w zapytaniu, tj. np. "INSERT INTO artykuly (`tytul`, `tresc`, `kategoria`) VALUES ('Tytuł', 'Treść', 'Ważne');
komentarz 12 kwietnia 2020 przez ellonardo Nowicjusz (120 p.)
Ja rozumiem, ale
Mi chodzi w jaki sposób mogę zapisać w formie zmiennych PHP kod HTML, abym mógł go instrukcją INSERT INTO dodać do bazy danych np. taki artykuł:

To jest moja "testowa" wiadomość ('do was') <b>pogrubienie</b><i>kursywa</i>

Jak mogę taki kod w/w zapisać aby cała linijka z instrukcją INSERT INTO się nie posypała, bo instrukcja zapisana w apostrofach wywala się gdy w artykule będą apostrofy, a gdy użyje cudzysłowia to jest to samo, dla cudzysłowów.
komentarz 12 kwietnia 2020 przez Bartx Bywalec (2,100 p.)
Mógłbym ci pomóc dalej, ale jak widzę jak ktoś popełnia podstawowe błędy i za życzliwe zwrócenie na to uwagi "odwdzięcza się" ujemną oceną to tak jakby sam z tej pomocy rezygnował.
komentarz 12 kwietnia 2020 przez ellonardo Nowicjusz (120 p.)
Bo mi nie chodziło o to, czy mam ten nawias z kolejnymi kolumnami w tabeli tylko w jaki sposób mogę zapisać tamtą zmienną, aby nie wywalało mi instrukcji. Instrukcja działała bez tego nawiasu, bo miałem po kolei ustawione wartości tak jak w tabeli. Nie używając " i ' w zmiennej instrukcja działała...

Podobne pytania

0 głosów
1 odpowiedź 160 wizyt
0 głosów
1 odpowiedź 161 wizyt
0 głosów
1 odpowiedź 367 wizyt
pytanie zadane 27 stycznia 2018 w PHP przez halotelefonek Bywalec (2,360 p.)

86,483 zapytań

135,239 odpowiedzi

300,476 komentarzy

57,229 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...