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

Insert do mysql - PHP

0 głosów
40 wizyt
pytanie zadane 20 maja w PHP, Symfony, Zend przez Moras Obywatel (1,090 p.)
edycja 20 maja przez Moras

Chcę dodać coś do bazy danych poprzez formularz, ale coś nie idzie. Połączenie z bazą mysql działa, ale chyba błąd jest w poleceniu sql, próbowałem już na różne sposoby, ale dalej nic.

	<div class="container mt-5">
		<form action="obsluga_dodaj_wpis.php" method="post">
			<div class="form-group">
				
				<input name="tytul" type="text" class="form-control" id="inputTytul" aria-describedby="emailHelp" placeholder="Tytuł">
				<textarea name="opis" class="form-control mt-3" id="exampleFormControlTextarea1" rows="3" placeholder="Krótki opis"></textarea>
				
				<div class="text-center mt-3">
					<button type="submit" class="btn btn-success">Dodaj</button>
				</div>
			</div>
		</form>
	</div>
<?php
	SESSION_START();
	require_once "connect.php";
	
	$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
	$link = mysqli_connect($host, $db_user, $db_password, $db_name);
	
	$polaczenie -> query ('SET NAMES utf8');
	$polaczenie -> query ('SET CHARACTER_SET utf8_polish_ci');
		
	if($polaczenie->connect_errno)
	{
		
		die('Error: '.$polaczenie->connect_errno);
	}
	else{
		
		
		$sql = 'INSERT INTO wpisy (id, tytul, opis, id_user) VALUES (NULL,'.$_POST['tytul'].','.$_POST['opis'].','.$_SESSION['id'].')';
		
		if($polaczenie->query($sql)){
			
			$polaczenie->free_result();
		}
		else{
			echo "ERROR";
			
			echo $_POST['tytul']." ".$_POST['opis']." ".$_SESSION['id'];
		}
		
	}
	
?>

Jak na razie nie chcę wprowadzać nic do kolumny 'tresc', i 'image', a kolumna 'id' ma ustawioną auto inkrementację. Bardzo proszę o pomoc.

1 odpowiedź

+1 głos
odpowiedź 20 maja przez Arkadiusz Waluk Ekspert (249,210 p.)
wybrane 20 maja przez Moras
 
Najlepsza
Jak rozumiem wartości $_POST['tytul'] i $_POST['opis'] to stringi, a więc dodając je w zapytaniu należy wziąć je w apostrofy/cudzysłowy.

Inna rzecz, że takie wstawianie wartości do zapytania jest niebezpieczne, naraża na atak SQL injection. Nie widzę abyś jakkolwiek sprawdzał te wartości, ani nawet kontrolował czy istnieją. Wszystko wstawiane do zapytania należy bindować, wtedy zapytanie idzie do bazy osobno, wartości osobno i nie ma opcji wykonania ataku.
komentarz 20 maja przez Moras Obywatel (1,090 p.)
Zdaje sobie sprawę, że stronka jest podatna na SQL injection, ale na początek chciałem zrobić, żeby działało. Zabezpieczeniami się zajmę później
1
komentarz 20 maja przez Moras Obywatel (1,090 p.)

Już działa. Dzięki

$sql = "INSERT INTO wpisy(id, tytul, opis, tresc, id_user) VALUES ('NULL','".$_POST["tytul"]."','".$_POST["opis"]."', ' ','".$_SESSION['id']."')";

 

Podobne pytania

0 głosów
2 odpowiedzi 217 wizyt
pytanie zadane 3 stycznia 2018 w PHP, Symfony, Zend przez kacz.ma2 Nowicjusz (180 p.)
0 głosów
1 odpowiedź 180 wizyt
pytanie zadane 2 kwietnia 2017 w SQL, bazy danych przez MrSanten Nowicjusz (120 p.)
0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 17 grudnia 2017 w SQL, bazy danych przez seam3 Początkujący (410 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

65,753 zapytań

112,388 odpowiedzi

237,308 komentarzy

46,699 pasjonatów

Przeglądających: 213
Pasjonatów: 12 Gości: 201

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...