Błąd składniowy w skrypcie dodającym rekordy do bazy

0
<?php
$Imie=$_GET["Imie"];
$plec=$_GET["plec"];
$data=$_GET["data"];
$Komentarz=$_GET["numer"];
$Komentarz1=$_GET["numer1"];

$con = new mysqli("127.0.0.1","root","","silownia1");
 
$q="INSERT INTO dane osobowe (Imie, plec, data, numer, numer1) VALUES ('".$Imie."' , '".$plec."', '".$data."', '".$Komentarz."', '".$Komentarz1."'); ";
$wynik=$con->query($q)
if($wynik=$con->query($q))
while($row=$wynik->fetch_array())
echo $row[$ff] . "<br/>";
else
echo $con->errno . " " . $con->error;
?>

screenshot-20221117154626.png

1

A nie brakuje Ci średnika na końcu linii poprzedniej?

https://phpkurs.pl/skladnia/

jedną z głównych zasad języka PHP (jak i wielu innych – m. in. C i Perla) jest umieszczenie na końcu każdej instrukcji (niekoniecznie linii) znaku średnika (’;’). Można go pominąć tylko jeśli w danym miejscu następuje przejście do trybu HTML, a więc po danej linii następuje symbol przejścia do trybu HTML.

0
cerrato napisał(a):

A nie brakuje Ci średnika na końcu linii poprzedniej?

chodzi ci o linie 10 ?

1

Chodzi o linię przed tą, w której jest if i która to zgłasza błąd - $wynik=$con->query($q) - średnika brak.

A tak poza tym to taki sposób działania na bazie jest mega ryzykowny i podatny na SQL injection - https://pl.wikipedia.org/wiki/SQL_injection.

Nigdy nie dawaj w treści zapytania danych pobranych z frontu (czyli - od użytkownika) bez jakiejkolwiek filtracji.

0
cerrato napisał(a):

Chodzi o linię przed tą, w której jest if i która to zgłasza błąd - $wynik=$con->query($q) - średnika brak.

dodałem średnik w linijce 11,12,13 i teraz wywala błąd w 15

1

Bo przed else się nie daje. Naprawdę książki nie gryzą

0

no usunąłem przed else i dalej pokazuje błąd w 15

1

Nie wolno sklejać zapytań w taki sposób jak Ty zrobiłeś bo to jest jedna z najpoważniejszych dziur w bezpieczeństwie aplikacji (sqlInjection).

  1. Poczytaj o przekazywaniu wartości do zapytania jako parametry
  2. Każdą zmienną taką jak $Imie, $Plec itd... musisz przepuścić przez funkcję: https://www.php.net/manual/en/mysqli.real-escape-string.php
$q="INSERT INTO dane osobowe (Imie, plec, data, numer, numer1) VALUES ('".$Imie."' , '".$plec."', '".$data."', '".$Komentarz."', '".$Komentarz1."'); ";

O wiele czytelniej i bezpieczniej byłoby też gdybyś to zapisał tak:

$Imie = mysqli_real_escape_string ( $Imie );
$plec = mysqli_real_escape_string ( $plec );

(...)

$q="INSERT INTO dane osobowe
  (Imie, plec, data, numer, numer1)
  VALUES
  ('{$Imie}', '{$plec}', '{$data}', '{$Komentarz}', '{$Komentarz1}'); ";
0
Programista poziom b2 napisał(a):

no usunąłem przed else i dalej pokazuje błąd w 15

Pamiętaj, że czasem możesz mieć, trzy, pięć, dziesięć błędów w swoim kodzie. Usunięcie jednego może nie naprawić wszystkich pozostałych za jednym razem, więć musisz poprawić kolejne, i kolejne, i kolejne, i dopiero wtedy Twoja aplikacja się włączy.

Twój tekst

Programista poziom b2 napisał(a):

no usunąłem przed else i dalej pokazuje błąd w 15

a konkretnie zdanie i dalej pokazuje błąd napewniej oznacza że usunąłeś tylko jeden błąd, ale inne błędy nadal pozostają i trzeba je fixnąć wczesniej.

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