Volledige versie bekijken : Database + PHP insert probleem
AKNL
%Europe/Berlin %563 %2008, 13:32
Hi, ik ben me eens aan het wagen op het PHP - DB gebied en loop tegen een probleem op.
Ik gebruik onderstaande code om ingevulde waarde in mn database te zetten
<?php
if(isset($_POST['add']))
{
include 'config.php';
include 'opendb.php';
$query = "INSERT INTO submissions (name) VALUES ('name')";
mysql_query($query) or die('Error, insert query failed');
$query = "FLUSH PRIVILEGES";
mysql_query($query) or die('Error, insert query failed');
include 'closedb.php';
echo "New Image added";
}
else
{
?>
<form method="post">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">name</td>
<td><input name="name" type="text" id="name"></td>
</tr>
<tr>
<td width="100"> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td><input name="add" type="submit" id="add" value="Add New Image"></td>
</tr>
</table>
</form>
<?php
}
?>
Opzich lukt het wel, alleen de waarde is altijd name en niet het ingevulde verhaal. Iemand die mij kan zeggen hoe ik dit kan fixen? Alvast bedankt.
We hebben ook [php] tags :)
Dauntless
%Europe/Berlin %590 %2008, 14:10
$query = "INSERT INTO submissions (name) VALUES ('name')";
Je gebruikt hier dan ook de letterlijke string 'name'.
$query = "INSERT INTO submissions (name) VALUES ('" . $_POST['name'] . "')";
Op die manier haal je de 'naam' variabele uit je POST data. (Let wel op: je zou nooit rechtstreeks data uit POST (of GET of REQUEST) in je DB mogen steken)
AKNL
%Europe/Berlin %628 %2008, 15:04
Ok dan ik heb de php qoutes ook gevonden, thanks :)
Bedankt voor je reactie. Ik heb nu onderstaand script, alles wordt in de database gedropt, maar toch krijg ik een error Error, insert query failed, enig idee hoe ik die melding kan oplossen? Onderstaand mijn gehele script.
<html>
<head>
<title>Add New Image</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
if(isset($_POST['add']))
{
include 'config.php';
include 'opendb.php';
$query = "INSERT INTO submissions (name, email, url, country, software, image, confirmpublish, confirmrules, hits, rating, active) VALUES ('" . $_POST['name'] . "', '" . $_POST['email'] . "', '" . $_POST['url'] . "', '" . $_POST['country'] . "', '" . $_POST['software'] . "', '" . $_POST['image'] . "', '" . $_POST['confirmpublish'] . "', '" . $_POST['confirmrules'] . "', '" . $_POST['hits'] . "', '" . $_POST['rating'] . "', '" . $_POST['active'] . "')";
mysql_query($query) or die('Error, insert query failed');
$query = "FLUSH PRIVILEGES";
mysql_query($query) or die('Error, insert query failed');
include 'closedb.php';
echo "New Image added";
}
else
{
?>
<form method="post">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">name</td>
<td><input name="name" type="text" id="name"></td>
</tr>
<tr>
<td width="100">email</td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td width="100">url</td>
<td><input name="url" type="text" id="url"></td>
</tr>
<tr>
<td width="100">country</td>
<td><input name="country" type="text" id="country"></td>
</tr>
<tr>
<td width="100">software</td>
<td><input name="software" type="text" id="software"></td>
</tr>
<tr>
<td width="100">image</td>
<td><input name="image" type="text" id="image"></td>
</tr>
<tr>
<td width="100">confirmpublish</td>
<td><input name="confirmpublish" type="text" id="confirmpublish"></td>
</tr>
<tr>
<td width="100">confirmrules</td>
<td><input name="confirmrules" type="text" id="confirmrules"></td>
</tr>
<tr>
<td width="100">hits</td>
<td><input name="hits" type="text" id="hits"></td>
</tr>
<tr>
<td width="100">rating</td>
<td><input name="rating" type="text" id="rating"></td>
</tr>
<tr>
<td width="100">active</td>
<td><input name="active" type="text" id="active"></td>
</tr>
<tr>
<td width="100"> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td><input name="add" type="submit" id="add" value="Add New Image"></td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
En wat bedoel je met:
(Let wel op: je zou nooit rechtstreeks data uit POST (of GET of REQUEST) in je DB mogen steken)
< Database nub hehe I know
Dauntless
%Europe/Berlin %632 %2008, 15:11
Op deze manier kan ik jouw DB droppen door als naam in te vullen '; DROP submissions;', (kan zijn dat hij niet exact juist is, want zoo veel ken ik er ook niet van ;) ).
Komt die error van je eerste insert, of van de Flush erna ?
AKNL
%Europe/Berlin %633 %2008, 15:11
of kan ik er beter dit van maken?
$_POST['name', 'email', 'url']
AKNL
%Europe/Berlin %634 %2008, 15:13
Komt die error van je eerste insert, of van de Flush erna ?
Ik denk van de insert, want ik krijg deze zodra ik op submit klik. Data staat wel juist in database, dus het kan ook van de flush zijn.
Dauntless
%Europe/Berlin %636 %2008, 15:15
Lol, verander dan de boodschap van de flush error en je weet het direct ... ? ;) Voeg eventueel ook (tijdelijk) mysql_error() toe in de foutboodschap.
AKNL
%Europe/Berlin %638 %2008, 15:18
< zoals ik al zei...nub :)
Dauntless
%Europe/Berlin %651 %2008, 15:38
Verander je code in:
<html>
<head>
<title>Add New Image</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
if(isset($_POST['add']))
{
include 'config.php';
include 'opendb.php';
$query = "INSERT INTO submissions (name, email, url, country, software, image, confirmpublish, confirmrules, hits, rating, active) VALUES ('" . $_POST['name'] . "', '" . $_POST['email'] . "', '" . $_POST['url'] . "', '" . $_POST['country'] . "', '" . $_POST['software'] . "', '" . $_POST['image'] . "', '" . $_POST['confirmpublish'] . "', '" . $_POST['confirmrules'] . "', '" . $_POST['hits'] . "', '" . $_POST['rating'] . "', '" . $_POST['active'] . "')";
mysql_query($query) or die('Error, insert query failed: '.mysql_error());
$query = "FLUSH PRIVILEGES";
mysql_query($query) or die('Error, flush failed: ' . mysql_error());
include 'closedb.php';
echo "New Image added";
}
else
{
?>
<form method="post">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">name</td>
<td><input name="name" type="text" id="name"></td>
</tr>
<tr>
<td width="100">email</td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td width="100">url</td>
<td><input name="url" type="text" id="url"></td>
</tr>
<tr>
<td width="100">country</td>
<td><input name="country" type="text" id="country"></td>
</tr>
<tr>
<td width="100">software</td>
<td><input name="software" type="text" id="software"></td>
</tr>
<tr>
<td width="100">image</td>
<td><input name="image" type="text" id="image"></td>
</tr>
<tr>
<td width="100">confirmpublish</td>
<td><input name="confirmpublish" type="text" id="confirmpublish"></td>
</tr>
<tr>
<td width="100">confirmrules</td>
<td><input name="confirmrules" type="text" id="confirmrules"></td>
</tr>
<tr>
<td width="100">hits</td>
<td><input name="hits" type="text" id="hits"></td>
</tr>
<tr>
<td width="100">rating</td>
<td><input name="rating" type="text" id="rating"></td>
</tr>
<tr>
<td width="100">active</td>
<td><input name="active" type="text" id="active"></td>
</tr>
<tr>
<td width="100"> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td><input name="add" type="submit" id="add" value="Add New Image"></td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
AKNL
%Europe/Berlin %662 %2008, 15:54
Thanks, dit is wat ik krijg
Error, flush failed: Access denied; you need the RELOAD privilege for this operation
AKNL
%Europe/Berlin %705 %2008, 16:55
Opgelost, ik heb
$query = "FLUSH PRIVILEGES";
mysql_query($query) or die('Error, flush failed: ' . mysql_error());
weggehaald en nu werkt het.
TIP: goed kijken wat je aan het doen bent, zeker als je een add user tutorial aan het doen bent terwijl je een form wilt maken :)
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.