Dodawanie rekordów do bazy danych

0

Mam taki o to kod


try
{
	$pdo = new PDO('mysql:host=localhost;dbname=typy', 'dam' , 'kiwi1622');
	$pdo-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	$pdo->exec ('SET NAMES "utf8"');
	
}
catch(PDOException $e)
{
	
	echo 'Nie mozna nawiazac polaczenia z baza danych';
}

try
{
	$sql = 'SELECT joketext FROM komentarze';
	$result = $pdo ->query($sql);
	
	
}
catch(PDOException $e) {
	
	echo 'Blad w trakcie pobierania dowcipow';
}
while ($row = $result->fetch())
{
	$jokes[] = $row['joketext'];
 
<?php
include "index.php";

if(isset($_POST['joketext']))
{
	
	$sql = 'INSERT INTO komentarze SET 
	joketext= "'.$_POST['joketext'].'" ,
	jokedate = "2016.05.14"';
}
$pdo ->exec($sql);
	



?> 

Skrypt pobiera rekordy i mial dodawać rekord. Zamiast wpisanej treści jednak dodawane są puste rekordy. Czy ktoś może pomóc ?

0

Spróbuj może:

$sql = 'INSERT INTO komentarze (joketext, jokedate) VALUES ($_POST['joketext'], \'2016.05.14\')';
1

SQL Injection!

1
Matumbe napisał(a):

Spróbuj może:

$sql = 'INSERT INTO komentarze (joketext, jokedate) VALUES ($_POST['joketext'], \'2016.05.14\')';

A gdzie bindowanie danych?

$date = date('Y-m-d H:i:s');
$sql = $pdo->prepare("INSERT INTO `komentarze`(`joketext`, `jokedate`) VALUES (:joketext, :jokedate)");
$sql->bindValue(":joketext", $_POST['joketext'], PDO::PARAM_STR);
$sql->bindValue(":jokedate", $date, PDO::PARAM_STR);
if($sql->execute() == false){	
	print_r($sql->errorInfo());
	return false;		
}else{	
	return true;
}
0

Niestety próbowałem dwóch podanych metod i jest to samo tj. dodaje sie pusty rekord
Czy ktoś może pomóc ?

0

Mam taki kod

<?php
include "index.php";
if (isset($_POST['joketext'])){
$date = date('Y-m-d H:i:s');
$sql = 'INSERT INTO komentarze SET
joketext = :joketext,
jokedate = "05.13.2016"';
$s = $pdo->prepare($sql);
$s->bindValue(':joketext', $_POST['joketext']);
$s->execute();
	
}
 

I nadal dodawany jest pusty rekord

0

Czy ktoś może pomóc ?

0

Podam kod formularza

 <?php include 'index.php';?>

<?php foreach ($jokes as $joke) : ?>
<blockquote>
<form action ="dodaj.php" method="post">
<label for="joketext">Wpisz tresc dowcipy:</label>
<textarea id="joketext" name="joketext" rows="3" cols="40"></textarea>
<input type="submit" value="Dodaj">
<p>
<?php echo htmlspecialchars ($joke, ENT_QUOTES, 'UTF-8'); ?>
</blockquote>
<?php endforeach; ?>

Gdzie tutaj jest błąd ? Bo nadal nie moge dodac rekordu do bazy danych

0
damm13 napisał(a):

Podam kod formularza

 <?php include 'index.php';?>

<?php foreach ($jokes as $joke) : ?>
<blockquote>
<form action ="dodaj.php" method="post">
<label for="joketext">Wpisz tresc dowcipy:</label>
<textarea id="joketext" name="joketext" rows="3" cols="40"></textarea>
<input type="submit" value="Dodaj">
<p>
<?php echo htmlspecialchars ($joke, ENT_QUOTES, 'UTF-8'); ?>
</blockquote>
<?php endforeach; ?>

Gdzie tutaj jest błąd ? Bo nadal nie moge dodac rekordu do bazy danych

Po co Ci pętla do formularza? Zrobiłeś niezłego potworka :)

Podaję poprawny kod:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8"/>
	<title>Dodawanie do bazy danych z formularza [PDO]</title>
</head>
<body>
	<form action="index.php" method="post">
		<label for="joketext">Wpisz tresc dowcipu</label>
		<textarea id="joketext" name="joketext" rows="3" cols="40"></textarea>
		<input type="submit" value="Dodaj" name="add">
	</form>
</body>
</html>
<?php
	//connect to database
	try{
		$db = new PDO('mysql:host=HOST;dbname=DB_NAME', 'USER', 'PASS', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
	}catch (PDOException $e){
		print "Błąd połączenia z bazą danych!: " . $e->getMessage() . "<br/>";
	die();
	}
?>
<?php
	if(isset($_POST['add'])){
		$joketext = trim($_POST['joketext']);
		if(empty($joketext)){
			echo '<p style="font-weight: bold">[Błąd] - proszę, poaj treść dowcipu.</p>';
		}else{
			$date = date('Y-m-d H:i:s');
			$sql = $pdo->prepare("INSERT INTO `komentarze`(`joketext`, `jokedate`) VALUES (:joketext, :jokedate)");
			$sql->bindValue(":joketext", $_POST['joketext'], PDO::PARAM_STR);
			$sql->bindValue(":jokedate", $date, PDO::PARAM_STR);
			if(!$sql->execute()){
				print_r($sql->errorInfo());
			}
		}
	}
?>

Oczywiście podmień sobie dane do połączenia z bazą danych.

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