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

PHP problem z komendą UPDATE SQL

Object Storage Arubacloud
0 głosów
188 wizyt
pytanie zadane 10 maja 2018 w PHP przez Browarnik123 Użytkownik (830 p.)

Hej ! Mam problem . Chciałbym zaktualizowac baze danych poprzez php lecz wyskakuje mi błąd :

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Temat: serv, WHERE temat = serverlog.txt AND plik = Plik log' at line 5 in C:\xamppp\htdocs\save.php:153 Stack trace: #0 C:\xamppp\htdocs\save.php(153): PDO->prepare('UPDATE pliki ...') #1 {main} thrown in C:\xamppp\htdocs\save.php on line 153

Mój kod odpowiedzialny za to :

$sql = "UPDATE pliki   
                 SET akcja = $akcja[$t],
                 valid = $wynik[$t],
                 data = $daty[$t], 
                 WHERE temat = $temat AND plik = $pliki[$t] "   ;

                 $statement = $db->prepare($sql);
                 $statement ->execute();

Prosze Was o pomoc . Z góry dziękuje !

2 odpowiedzi

0 głosów
odpowiedź 10 maja 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 10 maja 2018 przez Browarnik123
 
Najlepsza
Wszystkie wartości, które w zapytaniu są stringami, wypadałoby zapisać w apostrofy lub cudzysłowy - nie wiem czym jest $akcja czy $wynik, ale już $temat to ewidentnie wygląda na stringa.

A jeszcze lepiej byłoby użyć bindowania, tzn. wszystkie wartości, które z zewnątrz idą do bazy bindować. Wtedy masz pewną obronę przed atakami sql injection.
komentarz 10 maja 2018 przez Browarnik123 Użytkownik (830 p.)

Zapisałem w apostrofach lecz nic się nie zmieniło . W moim przypadku odpornoć na ataki nie jest potrzebna.

 

$sql = "UPDATE pliki   
                 SET akcja = '$akcja[$t]',
                 valid = '$wynik[$t]',
                 data = '$daty[$t]', 
                 WHERE temat = '$temat' AND plik = '$pliki[$t]' "   ;

 

komentarz 10 maja 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)

W moim przypadku odpornoć na ataki nie jest potrzebna.

Raczej średnie założenie, polecam jednak obrać sobie nawyk i zawsze bindować. 

data = '$daty[$t]', 

Za ostatnią wartością przed WHERE usuń przecinek.

komentarz 10 maja 2018 przez Browarnik123 Użytkownik (830 p.)

Serdecznie dziękuje !


smiley

0 głosów
odpowiedź 10 maja 2018 przez Bazylia Początkujący (440 p.)

Przykład łączenia z bazą MySQL:

$servername = "(nazwa hosta, lokalnie użyj 'localhost')";
$username = "(nazwa użytkownika, zwykle 'root')";
$password = "(hasło, zwykle puste)";
$dbname = "(nazwa bazy danych)";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "zapytanie";

if ($conn->query($sql) === TRUE) {
    // sukcess
} else {
    // blad
    echo "Bład: " . $conn->error;
}

$conn->close();

Jeśli chcesz mogę znaleźć błąd, tylko musisz mi dać twój kod PHP.

komentarz 10 maja 2018 przez Mariusz08 Maniak (62,300 p.)

A dlaczego nie PDO? crying

Podobne pytania

0 głosów
3 odpowiedzi 342 wizyt
pytanie zadane 29 stycznia 2017 w PHP przez Alterwar Dyskutant (7,650 p.)
0 głosów
1 odpowiedź 161 wizyt
pytanie zadane 31 stycznia 2020 w SQL, bazy danych przez bwl Obywatel (1,530 p.)
0 głosów
4 odpowiedzi 2,827 wizyt
pytanie zadane 8 grudnia 2017 w PHP przez kamilocl Nowicjusz (220 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...