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

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:

$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]) . "', ";
        }
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).

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

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

0

To jakiej funkcji mam użyć, htmlspecialchar?

0

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

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

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

$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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1