Wyłapanie błędu z funkcji real escape string

Wyłapanie błędu z funkcji real escape string
GU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 94
0

Cześć,
tworzę aplikację bazodanową przechowującą produkty w bazie danych. Używam funkcji mysqli_real_escape_string, by użytkownik nie mógł wrzucić w to miejsce kawałka kodu. Funkcja działa poprawnie, jednak przy wpisaniu w inputa inną wartość, pojawia mi się kod błędu i linijka. Ja bym chciał, by był tam warunek, który na przykład wróci mi do strony głównej. Próbowałem wstawić na IF ale wychodzi mi błąd. Czy w ogóle IF w takim miejscu zadziała? Czy jest inny sposób, bym mógł wyłapać error i odpowiednie zareagować na niego.

Mój kod:

Kopiuj
$data = array($_POST['marka'], $_POST['model']);
 
    $columns = array('marka', 'model');
    $text = "";

    for($z = 0; $z < 2; $z++){
        if(!empty($data[$z])){
            $text = $text . $columns[$z] . "='" . mysql_real_escape_string($data[$z]) . "', ";
        }
NewUser2k13
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 217
0

Funkcja działa poprawnie, jednak przy wpisaniu w inputa inną wartość, pojawia mi się kod błędu i linijka.
Co to za błąd? Możesz wkleić?

Ja strzelam, że problem masz w zapytaniu - zmienna $text
Nie wiem co z nią później robisz, ale zakładam, że nie pozbywasz się ostatniego przecinka (dołączanego w każdym obiegu pętli).

GU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 94
0

Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in C:\xampp\htdocs\materialdb\modals\editmodal-product.php:117 Stack trace: #0 {main} thrown in C:\xampp\htdocs\materialdb\modals\editmodal-product.php on line 117

NewUser2k13
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 217
2

Jaka wersja PHP?
Od wersji PHP7.0 ta funkcja została usunięta.

https://www.php.net/manual/en/mysqli.real-escape-string.php

GU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 94
0

To jakiej funkcji mam użyć, htmlspecialchar?

GU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 94
0

Problem tylko z tą funkcją jest taki, że przy podaniu znaków specjalnych, zmienia mi dane w bazie na puste pola.

katakrowa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Chorzów
  • Postów: 1670
0

@guuren: Funkcja mysql_real_escape_string ma inną kolejność parametrów niż mysqli_real_escape_string

https://www.php.net/manual/en/function.mysql-real-escape-string.php
https://www.php.net/manual/en/mysqli.real-escape-string.php

no_solution_found
  • Rejestracja: dni
  • Ostatnio: dni
0

Polecam używanie PDO. Ma ładną składnie i fajnie ogarnia bezpieczne bindowanie danych. Możesz o nim poczytać tutaj: https://phpdelusions.net/pdo

To w jaki sposób robisz zapytania działa, ale jest bardzo błędnogenne. Ja polecam np takie api

Kopiuj
$sql = "UPDATE users SET name = ? WHERE id = ?";
$pdo->prepare($sql)->execute([$name, $id]);

I nie bawisz się w jakieś escapowanie itp, robi to za Ciebie PDO.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.