UPDATE query met variabelen als tabelnaam
ik ben mijn eindwerk in php aan het maken, maar zit nu met een probleem waar ik geen oplossing voor vind.
Ik verzend een UPDATE query naar mijn databank die er als volgt uitziet:
$q = "UPDATE " . $_GET['agendaPuntType'] . " SET " . $_GET['agendaPuntType'] . " = '" . $_POST['elm1'] . "' WHERE agenda_punt_id = '" . $_GET['agendaPuntID'] . "'";
Als ik een echo van de variabelen doe, dan hebben ze de waarde die in de query zouden moeten staan. De query wil echter niet uitvoeren.
Als ik de variabelen vervang door hun effectieve waarde, dan wordt de query echter wel uitgevoerd.
Heeft iemand een idee voor een oplossing? Alvast bedankt.
echo $q;
En kijk eens of het dan klopt wat er staat.
Maar volgens mij zie ik al iets wat waarschijnlijk niet goed is.
UPDATE " . $_GET['agendaPuntType']
SET " . $_GET['agendaPuntType']
Heb je een tabel met dezelfde naam als 1 van de kolommen ?
En ja idd, bvb. tabel 'onderwerp' heeft een kolom 'onderwerp'.
Dit zou toch geen probleem mogen geven?
Maar hoezo krijg je geen echo, je echo'd die query-string toch ?
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$q = "UPDATE " . $_GET['agendaPuntType'] . " SET " . $_GET['agendaPuntType'] . " = '" . $_POST['elm1'] . "' WHERE agenda_punt_id = '" . $_GET['agendaPuntID'] . "'";
echo $q;
?>
$q = "UPDATE " . $_GET['agendaPuntType'] . " SET " . $_GET['agendaPuntType'] . " = '" . $_POST['elm1'] . "' WHERE agenda_punt_id = '" . $_GET['agendaPuntID'] . "'";
echo $q;
?>
Gewijzigd op 01/01/1970 01:00:00 door Baarr
ik krijg als echo:
UPDATE SET = 'qsdfsqdf' WHERE agenda_punt_id = ''
ik krijg goede output als ik de variabelen voor de query output, na de query zijn ze echter leeg :s
if($_POST['elm1']!='')
{
echo $_GET['agendaPuntID']. "<BR>";
echo $_GET['agendaPuntType']. "<BR>";
$q = "UPDATE" .$agendaPuntType. " SET ".$agendaPuntType." = '" . $_POST['elm1'] . "' WHERE agenda_punt_id = '".$agendaPID."'";
echo $q. "<BR>";
mysql_query($q) or die(mysql_error());
}
Zet ik de variabelen buiten het if-statement, dan krijg ik wel echo.
De variabele $_POST['elm1'] is de inhoud van een tekstarea, dus als de textarea leeg is, dan wordt de inhoud van het if-statement niet uitgevoerd.
Dit is reeds getest en het if-statement werkt zeker.
De enige systemen waarbij dit het geval is, is een systeem voor het beheer van databases, bv. PHPMyAdmin. In ieder ander systeem weet jij precies wat de naam van de tabel is en welke kolom moet worden bijgewerkt. Weet je dat niet, dan gok ik erop dat jouw datamodel niet goed is. Zeker omdat je GET gebruikt, waarmee je ook nog eens een veiligheidslek creeert.
Laat je <form........> tag eens zien.
Door op een link te klikken moet in de databank iets aangepast worden.
Er is een link voor 'onderwerp', een link voor 'evaluatie', enz...
Daarom geef ik een variable door in de link die dus ofwel de waarde onderwerp, of evaluatie, of iets anders heeft.
Die link verwijst steeds naar hetzelfde php bestand, daarom dat ik zo tewerk ga.
Das al de info komt uit een url. Dan is $_POST dus niet geset.
Maar aangezien deze variabelen niet zichtbaar mogen zijn in mijn form, hoe kan ik ze dan meesturen?
Hier de code van mijn form:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php echo $sHeader;
echo "<form method=\"post\" action=\"home.php?aPuntID=$agendaPuntID&aPuntType=$agendaPuntType&links=agenda/dagMenu.php&main=tekstverwerker.php\">";
echo "<textarea id=\"elm1\" name=\"elm1\" rows=\"15\" cols=\"80\">".$sContent." </textarea>";
//<br />
echo "<input type=\"submit\" name=\"save\" value=\"Submit\" />";
echo "<input type=\"reset\" name=\"reset\" value=\"Reset\" />";
echo "</form>";
?>
echo "<form method=\"post\" action=\"home.php?aPuntID=$agendaPuntID&aPuntType=$agendaPuntType&links=agenda/dagMenu.php&main=tekstverwerker.php\">";
echo "<textarea id=\"elm1\" name=\"elm1\" rows=\"15\" cols=\"80\">".$sContent." </textarea>";
//<br />
echo "<input type=\"submit\" name=\"save\" value=\"Submit\" />";
echo "<input type=\"reset\" name=\"reset\" value=\"Reset\" />";
echo "</form>";
?>
Zo is de textarea een $_POST en zijn de rest $_GET waardes.
bedankt voor de hulp allen