• 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

VPS Starter Arubacloud
0 głosów
228 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 (289,150 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 (289,150 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,280 p.)

A dlaczego nie PDO? crying

Podobne pytania

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

93,030 zapytań

141,992 odpowiedzi

321,294 komentarzy

62,377 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...