Hallo,

Ik ben bezig een pagina te maken waarin members hun gegevens kunnen aanpassen, maar het wil niet lukken.
Ik krijg deze fout melding;

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE user_id = '1'' at line 1

Dit is mijn account.php

<?php
$sql = "SELECT name, achternaam, email, username, background FROM users WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ";
$result = mysql_query($sql);
$rows = mysql_fetch_assoc($result);

if(isset($_SESSION['logged']) && $_SESSION['logged'] == 1)
{
if (!isset($_POST['submit'])) {
?>
<form action="account.php" method="post">
<table>
<tr>
<td><h1>Account</h1></td>
</tr>
<tr>
<td><p>Gebruikersnaam:</p></td> <td><p><b><?php echo $rows['username'] ?></b></p></td>
</tr>
<tr>
<td><p>Email:</p></td> <td><p><b><?php echo $rows['email'] ?></b></p></td>
</tr>
<tr>
<td><p>Naam:</p></td> <td><p><input type="text" name="name" value="<?php echo $rows['name'] ?>" /></p></td>
</tr>
<tr>
<td><p>Achternaam:</p></td> <td><p><input type="text" name="achternaam" value="<?php echo $rows['achternaam'] ?>" /></p></td>
</tr>
<tr>
<td><p>Wachtwoord:</p></td> <td><p><input type="password" name="password" /></p></td>
</tr>
<tr>
<td><p>Achtergrond:</p></td> <td><p><select name="wallpaper">
<option value="../css/background1.css">OS X Snow Leopard</option>
<option value="../css/background2.css">OS X Lion</option>
</select></p></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Pas aan"></td>
</tr>
</table>
</form>
<?php
}
else
{
$name = form($_POST['name']);
$achternaam = form($_POST['achternaam']);
$password = md5($_POST['password']); // Encrypts the password.
$wallpaper = form($_POST['wallpaper']);

if (($password == "") || ($name == "")) { // Checks for blanks.
echo("<a>Niet alle velden zijn ingevuld!</a>");
}

mysql_query("UPDATE users SET name = '".$name."', achternaam = '".$achternaam."', WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ") or die (mysql_error());
echo "<a>Het aanpassen is gelukt!</a>";

}}

else
{
echo '<p>Je moet ingelogd zijn om deze pagina te bekijken.</p>';
}
?>

Iemand een idee?
Alvast bedankt.

Toevoeging op 15/03/2011 23:02:40:

Laat maar,
ik heb het even grondig doorgekeken en de fout was een , (komma) bij SET name = '".$name."', achternaam = '".$achternaam."',
Die laatste komma mag daar niet staan.
De komma voor WHERE moet weg.
Ik krijg nu weer dezelfde error,
dit is nu mijn script:


<?php
$sql = "SELECT name, achternaam, email, username, background FROM users WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ";
$result = mysql_query($sql);
$rows = mysql_fetch_assoc($result);

if(isset($_SESSION['logged']) && $_SESSION['logged'] == 1)
{
if (!isset($_POST['submit'])) {
?>
<form action="account.php" method="post">
<h1>Account</h1><p>Velden met een * zijn verplicht</p>
<table>
<tr>
<td><p>Email:*</p></td> <td><p><input type="text" name="email"  value="<?php echo $rows['email'] ?>" /></p></td>
</tr>
<tr>
<td><p>Naam:*</p></td> <td><p><input type="text" name="name"  value="<?php echo $rows['name'] ?>" /></p></td>
</tr>
<tr>
<td><p>Achternaam:</p></td> <td><p><input type="text" name="achternaam"  value="<?php echo $rows['achternaam'] ?>" /></p></td>
</tr>
<tr>
<td><p>Wachtwoord:*</p></td> <td><p><input type="password" name="password" /></p></td> <td><p>Vul hier je actuele wachtwoord in, of een nieuw wachtwoord.</p></td>
</tr>
<tr>
<td><p>Achtergrond:</p></td> <td><p><select name="wallpaper">
<option value="../css/background2.css">OS X Lion</option>
<option value="../css/background1.css">OS X Snow Leopard</option>
</select></p></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Pas aan"></td>
</tr>
</table>
</form>
<?php
}
else
{
	$name = form($_POST['name']);
	$achternaam = form($_POST['achternaam']);
	$password = sha1($_POST['password']); // Encrypts the password.
	$wachtwoord = form($_POST['password']);
	$wallpaper = form($_POST['wallpaper']);
	$email = form($_POST['email']);
 
	if (($wachtwoord == "") || ($name == "") || ($email == "")) { // Checks for blanks.
		echo("<a>Niet alle velden zijn ingevuld!</a>");
	}
	$q = mysql_query("SELECT * FROM `users` WHERE email = '$email' WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ") or die (mysql_error());
	$r = mysql_num_rows($q);
	$b = mysql_query("SELECT * FROM `users` WHERE email = '$email'") or die (mysql_error());
	$c = mysql_num_rows($b);
 
	if ($r > 1) { // Als het email adres al door de gebruiker in gebruik is
		if ($c > 0) { // Als het email adres al in gebruik is
		echo '<p>Dit email adres is al in gebruik!</p>';
	}} else {
	mysql_query("UPDATE users SET name = '".$name."', achternaam = '".$achternaam."', background = '".$wallpaper."', password = '".$password."', email = '".$email."' WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ") or die (mysql_error());
	echo "<a>Het aanpassen is gelukt!</a>";
	}
}}
	else
	{
		echo '<p>Je moet ingelogd zijn om deze pagina te bekijken.</p>';
	}
?>

Nu kom ik er even niet uit.
Er kan maar één keer WHERE in een gewone query staan.

SELECT
	a,
	b
FROM
	tabel
WHERE
	a = 'b'
AND
	b = 'a'
Bedankt,
alleen die snap ik niet helemaal?
Wat snap je dan niet? MySQL is gewoon een soort van engels schrijven en daarmee aangeven wat je moet doen. In het Nederlands is dit bijv:
SELECTEER voornaam, achternaam VAN tabel WANNEER voornaam = 'Jorg' EN achternaam = 'Heesbeen'

Maar dan is het in het engels:
SELECT voornaam, achternaam FROM tabel WHERE voornaam = 'Jorg' AND achternaam = 'Heesbeen'
Dat is trouwens het geval voor zowat elke script/programmeer -taal.

Goed Engels kennen, zorgt er voor dat je veel beter beseft waarmee je bezig bent.
Ik snap niet waar ik het script moet plaatsen die Vincent geeft.
Het gaat om deze regel.
<?php
$q = mysql_query("SELECT * FROM `users` WHERE email = '$email' WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ") or die (mysql_error());
?>
Vervang hier de tweede WHERE door AND.
Gebruik geen backtics in een query.

Reageren