SQL fout maar de query is wel goed.
Krijg een SQL error die als volgt is:
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 userid = '15' AND enqueteid = '1'' at line 4
De query waardoor dit komt heb ik inmiddels gevonden. Dat is de volgende:
Code (php)
1
2
3
4
5
2
3
4
5
<?
$sql = "UPDATE PP1 SET '".$PUT."' = '".$TUSSENSTAND."' WHERE userid = '".$USER."' AND enqueteid = '".$ENQUETE."' ";
$res = mysql_query($sql) or die(mysql_error());
?>
$sql = "UPDATE PP1 SET '".$PUT."' = '".$TUSSENSTAND."' WHERE userid = '".$USER."' AND enqueteid = '".$ENQUETE."' ";
$res = mysql_query($sql) or die(mysql_error());
?>
Deze query is echter goed. Deze wordt namelijk een paar keer meer gebruikt tijdens het doorlopen van het script en dan werkt hij wel goed :S.
Alleen de laatste keer dat hij gebruikt moet worden dan geeft hij deze error :S Iemand enig idee?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
$sql = "UPDATE PP1 SET '".$PUT."' = '".$TUSSENSTAND."' WHERE userid = '".$USER."' AND enqueteid = '".$ENQUETE."' ";
$res = mysql_query($sql)
// or die(mysql_error());
echo $sql;
?>
$sql = "UPDATE PP1 SET '".$PUT."' = '".$TUSSENSTAND."' WHERE userid = '".$USER."' AND enqueteid = '".$ENQUETE."' ";
$res = mysql_query($sql)
// or die(mysql_error());
echo $sql;
?>
wat krijg je dan?
UPDATE PP1 SET '' = '' WHERE userid = '15' AND enqueteid = '1'
Als ik echter handmatig waardes geef aan $PUT en $TUSSENSTAND dan komen deze wel in bovenstaande echo te staan maar de SQL error blijft.
het rare is dat hij dezelfde query bij andere vragen op de pagina ook gebruikt. Alleen dan zijn de vars PUT en TUSSENSTAND wel gevuld.
Gewijzigd op 01/01/1970 01:00:00 door Gerben van Erkelens
En wat staat er normaal in $pUT?
Dus dan kan hij ook niks in $PUT en $TUSSENSTAND zetten.
Ik begrijp echter niet waardoor antwoordsoort leeg is, want die wordt met de submit meegestuurd.
Komt dit toevallig uit een formulier? (zo ja gebruik dan $_POST['put'] of $_GET['put'])
moet sowieso zijn:
om de veldnaam mogen geen single quotes staan.
En natuurlijk moet er iets in de variabele staan.
Ik ben er nu achter dat antwoordsoort leeg is op de 1 of andere manier.
Eens kijken waarnaartoe ik het kan afleiden zodat ik straks hier weer wat meer duidelijkheid kan posten.
dan zie je of er iets in de POST array zit.
Jan:
En je ziet WAT er in zit, en dat is vaak nog fijner ;-)
althans.. bij mij dan
@ Wout: het gaat niet om LIKE. Het gaat er om dat de variabele $PUT niet gevuld wordt waardoor er geen tabelnaam in de query komt te staan.
Is het wel met hoofdletters? Zie het formulier.
Yup het is met hoofdletters.
En wat geeft het scriptje van Jan als antwoord?
$PUT=gecontroleerde($_POST['PUT']);
met GET krijg je:
$PUT=gecontroleerde($_GET['PUT']);
____________________________________________
gecontroleerde wil alleen zeggen dat je de POST of GET waarde wel moet controleren, voor je hem gaat gebruiken.
$PUT (en ook $TUSSENSTAND) worden niet opgehaald uit het formlier. $antwoordsoort echter wel.
Met de volgende code wordt PUT en TUSSENSTAND gevuld, tenminste dat zou hij moeten doen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
De else zorgt ervoor dat ik weet wanneer de variabele $antwoordsoort geen waarde heeft. Vandaar dat ik weet dat ik in de Post moet gaan kijken of deze waarde ingevuld wordt!
Gewijzigd op 01/01/1970 01:00:00 door Gerben van Erkelens
Aangezien $PUT niet gevuld wordt denk ik dat $antwoordsoort niet de goede waarde krijgt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?
$antwoordsoort = $_POST['antwoordsoort'];
if ($antwoordsoort == "vorm"){
$PUT = "vragen_vorm";
$TUSSENSTAND = "4" //deze waarde is echter variabel maar even ter vb.
}elseif ($antwoordsoort == "ingetogen"){
$PUT = "vragen_ingetogen";
$TUSSENSTAND = "2"
}else{
echo '1. Fout, geen antwoordsoort gegeven.';//zoals jij hem had zie je geen melding, dus als het goed is moet je nu wel deze melding zien.
}
?>
$antwoordsoort = $_POST['antwoordsoort'];
if ($antwoordsoort == "vorm"){
$PUT = "vragen_vorm";
$TUSSENSTAND = "4" //deze waarde is echter variabel maar even ter vb.
}elseif ($antwoordsoort == "ingetogen"){
$PUT = "vragen_ingetogen";
$TUSSENSTAND = "2"
}else{
echo '1. Fout, geen antwoordsoort gegeven.';//zoals jij hem had zie je geen melding, dus als het goed is moet je nu wel deze melding zien.
}
?>