Query foutje ... maarja was er fout?
Het geeft een parse error:
Code (php)
1
2
3
2
3
<?
$ins_sql = "INSERT INTO members SET user = '" . $_POST['profiel'] . "', pass = '" . $_POST['pass'] . "', klas = '" . $_POST['klas'] . "', leeftijd = '" . $_POST['leeftijd'] . "', email = '" . $_POST['email'] . "', naam = '" . $_POST['naam'] . "', activatie = '" . md5($_POST['profiel']) . "', plaatje = '" . $_POST['plaatje'] . "', about = '" . $_POST['about'] . "', woonplaats = '" . $_POST['woonplaats'] . "', website = '" . $_POST['website'] "', datum = '" . now() . "'";
?>
$ins_sql = "INSERT INTO members SET user = '" . $_POST['profiel'] . "', pass = '" . $_POST['pass'] . "', klas = '" . $_POST['klas'] . "', leeftijd = '" . $_POST['leeftijd'] . "', email = '" . $_POST['email'] . "', naam = '" . $_POST['naam'] . "', activatie = '" . md5($_POST['profiel']) . "', plaatje = '" . $_POST['plaatje'] . "', about = '" . $_POST['about'] . "', woonplaats = '" . $_POST['woonplaats'] . "', website = '" . $_POST['website'] "', datum = '" . now() . "'";
?>
Gewijzigd op 18/03/2004 22:42:00 door Mitch X
Code (php)
1
2
3
2
3
<?php
$ins_sql = "INSERT INTO members (user, pass, klas, leeftijd, email, naam, activatie, plaatje, about, woonplaats, website, datum) VALUES ('" . $_POST['profiel'] . "', '" . $_POST['pass'] . "', '" . $_POST['klas'] . "', '" . $_POST['leeftijd'] . "', '" . $_POST['email'] . "', '" . $_POST['naam'] . "', '" . md5($_POST['profiel']) . "', '" . $_POST['plaatje'] . "', '" . $_POST['about'] . "', '" . $_POST['woonplaats'] . "', '" . $_POST['website'] "', '" . now() . "')";
?>
$ins_sql = "INSERT INTO members (user, pass, klas, leeftijd, email, naam, activatie, plaatje, about, woonplaats, website, datum) VALUES ('" . $_POST['profiel'] . "', '" . $_POST['pass'] . "', '" . $_POST['klas'] . "', '" . $_POST['leeftijd'] . "', '" . $_POST['email'] . "', '" . $_POST['naam'] . "', '" . md5($_POST['profiel']) . "', '" . $_POST['plaatje'] . "', '" . $_POST['about'] . "', '" . $_POST['woonplaats'] . "', '" . $_POST['website'] "', '" . now() . "')";
?>
Elwin
Ik stel voor dat je overgaat op improved mysql functions in php. Of een van de andere abstractere DB classes, bijvoorbeeld die van PEAR
[scheldkannonade]
Dit zuigt natuurlijk alle dikke aarsen der universum, ik snap niet dat je hier vrolijk van wordt, als een monnik alle quotes mooi escapen en . 'en. VOLKOMEN KUT! zoals dat heet :)
[/scheldkannonade]
Goed, dan nu de oplossingen.
http://nl.php.net/manual/en/function.mysqli-bind-param.php
Ik wilde al een mooi voorbeeld geven, maar helaas: dit is nog grotendeels in beta fase, en het moet meegecompiled zijn met php (niet zeker of het standaard gebakken zit zit)
Dan maar de DB:: interface van PEAR (zie mijn magnificente tutorial elders op deze site. Ik vind dit heerlijk werken (Perl-DBI style baby ;))
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
// Eerst verbinding maken via DB, dat zoek je maar lekker zef uit.
$table_fields = array('user', 'pass', 'klas', 'leeftijd', 'email', 'naam', 'activatie', 'plaatje', 'about', 'woonplaats', 'website', 'datum');
$table_values = array($_POST['profiel'], etc, etc);
$table_name = 'members';
$sth = $db->autoPrepare($table_name, $table_fields, DB_AUTOQUERY_INSERT);
$db->execute($sth, $table_values);
?>
// Eerst verbinding maken via DB, dat zoek je maar lekker zef uit.
$table_fields = array('user', 'pass', 'klas', 'leeftijd', 'email', 'naam', 'activatie', 'plaatje', 'about', 'woonplaats', 'website', 'datum');
$table_values = array($_POST['profiel'], etc, etc);
$table_name = 'members';
$sth = $db->autoPrepare($table_name, $table_fields, DB_AUTOQUERY_INSERT);
$db->execute($sth, $table_values);
?>
Uitgebreide documentatie is te vinden op
http://pear.php.net/manual/en/package.database.php#package.database.db
Success,
Arend.
Toch is die wss niet fout :
[1] Ik doe het altijd zo
[2] De kleuren kloppen
[3] Elwins query geeft dezelfde parse error ...
Dus ff het stukje erboven ... ->
<!-- Script -->
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
if($_POST['profiel'] && $_POST['pass'] && $_POST['naam'] && $_POST['email'] && $_POST['klas'] && $_POST['leeftijd'] && $_POST['woonplaats'] && $_POST['register'] && $_POST['about'])
{
$check_sql = "SELECT * FROM members WHERE user = '" . $_POST['profiel'] . "'";
$check_res = mysql_query($check_sql);
if(mysql_num_rows($check_res) > 0)
{
echo "<b>De door jou gekozen profielnaam bestaat al!</b><br>";
echo "Probeer het <a href=\"" . $PHP_SELF . "\" class=\"normal\">opnieuw</a>!";
}
else
{
$ins_sql = "INSERT INTO members SET user = '" . $_POST['profiel'] . "', pass = '" . $_POST['pass'] . "', klas = '" . $_POST['klas'] . "', leeftijd = '" . $_POST['leeftijd'] . "', email = '" . $_POST['email'] . "', naam = '" . $_POST['naam'] . "', activatie = '" . md5($_POST['profiel']) . "', plaatje = '" . $_POST['plaatje'] . "', about = '" . $_POST['about'] . "', woonplaats = '" . $_POST['woonplaats'] . "', website = '" . $_POST['website'] "', datum = '" . now() . "'";
$ins_res = mysql_query($ins_sql);
?>
if($_POST['profiel'] && $_POST['pass'] && $_POST['naam'] && $_POST['email'] && $_POST['klas'] && $_POST['leeftijd'] && $_POST['woonplaats'] && $_POST['register'] && $_POST['about'])
{
$check_sql = "SELECT * FROM members WHERE user = '" . $_POST['profiel'] . "'";
$check_res = mysql_query($check_sql);
if(mysql_num_rows($check_res) > 0)
{
echo "<b>De door jou gekozen profielnaam bestaat al!</b><br>";
echo "Probeer het <a href=\"" . $PHP_SELF . "\" class=\"normal\">opnieuw</a>!";
}
else
{
$ins_sql = "INSERT INTO members SET user = '" . $_POST['profiel'] . "', pass = '" . $_POST['pass'] . "', klas = '" . $_POST['klas'] . "', leeftijd = '" . $_POST['leeftijd'] . "', email = '" . $_POST['email'] . "', naam = '" . $_POST['naam'] . "', activatie = '" . md5($_POST['profiel']) . "', plaatje = '" . $_POST['plaatje'] . "', about = '" . $_POST['about'] . "', woonplaats = '" . $_POST['woonplaats'] . "', website = '" . $_POST['website'] "', datum = '" . now() . "'";
$ins_res = mysql_query($ins_sql);
?>
Wat is er fout? :S ik zie het niet ...
Alle kleuren lijken te kloppen ... grappig is dat zonder de query de fout niet komt ...
mijn punt is dat je er dan altijd een onoverzichtelijke teringbende van maakt. Of de kleuren nou kloppen of niet, of elwin in zn naakie de wereld rond rent of niet: het is geen prettige manier van queries bouwen.
Code (php)
1
2
3
2
3
<?
$ins_sql = "INSERT INTO members SET user = '" . $_POST['profiel'] . "', pass = '" . $_POST['pass'] . "', klas = '" . $_POST['klas'] . "', leeftijd = '" . $_POST . "', email = '" . $_POST['email'] . "', naam = '" . $_POST['naam'] . "', activatie = '" . md5($_POST['profiel']) . "', plaatje = '" . $_POST['plaatje'] . "', about = '" . $_POST['about'] . "', woonplaats = '" . $_POST['woonplaats'] . "', website = '" . $_POST['website'] . "', datum = '" . now() . "'";
?>
$ins_sql = "INSERT INTO members SET user = '" . $_POST['profiel'] . "', pass = '" . $_POST['pass'] . "', klas = '" . $_POST['klas'] . "', leeftijd = '" . $_POST . "', email = '" . $_POST['email'] . "', naam = '" . $_POST['naam'] . "', activatie = '" . md5($_POST['profiel']) . "', plaatje = '" . $_POST['plaatje'] . "', about = '" . $_POST['about'] . "', woonplaats = '" . $_POST['woonplaats'] . "', website = '" . $_POST['website'] . "', datum = '" . now() . "'";
?>
Alleen na ut submitte zegt ie nu :
Fatal error: Call to undefined function: now() in c:\apache\htdocs\register.php on line 348
now() is ook een mysql functie en geen php functie.
Got it :)
$data = array($_POST['profiel'], $_POST['pass'], $_POST['klas'], $_POST['email'], $_POST['naam'], $_POST['profiel'], $_POST['about'], $_POST['website']);
$db->query(
INSERT INTO members
SET
user = ?,
pass = ?,
klas = ?,
leeftijd = ?,
email = ?,
naam = ?,
activatie = md5(?),
plaatje = ?,
about = ?,
woonplaats = ?,
website = ?,
datum = now()",
$data);
Mss een PEAR site?