Page 1 of 1

problem with Update query (variable)

Posted: Tue Jan 06, 2004 1:24 pm
by orangeapple
Hi !

I need some help, I've been stuck on this for hours . This code works well to update a data in mysql :




<html>
<head>
<title>Password Entry Results</title>
</head>
<body>
<h1>Password Entry Results</h1>
<?php
// create short variable names

$id = "";
$login=$HTTP_POST_VARS['login'];
$passe=$HTTP_POST_VARS['passe'];
$npasse=$HTTP_POST_VARS['npasse'];
$npasse2=$HTTP_POST_VARS['npasse2'];


if (!$login || !$passe || !$npasse || !$npasse2)
{
echo 'You have not entered all the required details.<br />'
.'Please go back and try again.';
exit;
}


if ($npasse !== $npasse2)
{
echo 'You have made a mistake while entering the passwords.<br />'
.'Please go back and try again.';
exit;
}



$id = addslashes($id);
$login = addslashes($login);
$passe = addslashes($passe);
$npasse = addslashes($npasse);


@ $db = mysql_pconnect('localhost', 'root', '');



if (!$db)
{
echo 'Error: Could not connect to database. Please try again later.';
exit;
}


mysql_select_db('mailelani') or exit("Could not connect");


$query = 'UPDATE `passe` SET `passe` = ''patapouf'' WHERE `login` = ''fuerim1'' LIMIT 1 ;'
. ' ';

$result = mysql_query($query);

echo $result ." password modified";

?>

</body>
</html>



but if I try to use variables, it doesn't :


$query = 'UPDATE `passe` SET `passe` = $npasse WHERE `login` = $login LIMIT 1 ;'
. ' ';

$result = mysql_query($query);


what I am doing wrong ????
Thanks for your help, I'm getting crazy !

Posted: Tue Jan 06, 2004 1:33 pm
by Sevengraff

Code: Select all

$query = 'UPDATE `passe` SET `passe` = $npasse WHERE `login` = $login LIMIT 1 ;'
Need to use double quotes, or exit the quotes and use the dot operator for concatenation:

Code: Select all

$query = "UPDATE `passe` SET `passe` = $npasse WHERE `login` = $login LIMIT 1 ;"

Code: Select all

$query = 'UPDATE `passe` SET `passe` = ' . $npasse . ' WHERE `login` = ' . $login . ' LIMIT 1 ;'
with single quotes, $npasse is left as the literal string "$npasse", and it's value is not substituted.

Also, don't you need to specify a table with UPDATE?

Code: Select all

UPDATE TABLE `users` SET passe = $npasse WHERE login = $login LIMIT 1;

Posted: Tue Jan 06, 2004 2:00 pm
by orangeapple
Thanks a lot Sevengraff,

:oops: Sorry, but I'm a newbie. I tried these 3 codes and it doesn't work :

$query = 'UPDATE `passe` SET `passe` = ' . $npasse . ' WHERE `login` = ' . $login . ' LIMIT 1 ;'
. ' ';

$query = "UPDATE TABLE `passe` SET passe = $npasse WHERE login = $login LIMIT 1;"
. ' ';

$query = "UPDATE `passe` SET `passe` = $npasse WHERE `login` = $login LIMIT 1 ;"
. ' ';


The name of the table is : passe and the name of a field is also : passe

Posted: Tue Jan 06, 2004 2:40 pm
by Sevengraff
What error message are you getting?

Posted: Tue Jan 06, 2004 6:00 pm
by JAM
You have quotes ending the lines outside the ;'s.

Code: Select all

// example
// bad
$query = 'UPDATE `passe` SET `passe` = ' . $npasse . ' WHERE `login` = ' . $login . ' LIMIT 1 ;'. ' '; 

// better
$query = 'UPDATE passe SET passe = '.$npasse.' WHERE login = '''.$login.''' LIMIT 1';
// or...
$query = "UPDATE passe SET passe = '{$npasse}' WHERE login = '{$login}' LIMIT 1";

Posted: Tue Jan 06, 2004 11:37 pm
by orangeapple
yessssss !

this :

$query = "UPDATE passe SET passe = '{$npasse}' WHERE login = '{$login}' LIMIT 1";

works well !

Thanks a lot to you both !!!

Have a nice day!