UPDATE query met variabelen als tabelnaam

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Squeek

Squeek

04/04/2007 19:05:00
Quote Anchor link
Hallo,

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.
 
PHP hulp

PHP hulp

20/11/2024 18:23:28
 
Baarr

Baarr

04/04/2007 19:10:00
Quote Anchor link
Doe eens een

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 ?
 
Squeek

Squeek

04/04/2007 19:18:00
Quote Anchor link
Ik krijg geen echo.

En ja idd, bvb. tabel 'onderwerp' heeft een kolom 'onderwerp'.
Dit zou toch geen probleem mogen geven?
 
Baarr

Baarr

04/04/2007 19:23:00
Quote Anchor link
Nee, dat kan natuurlijk, maar het leek me misschien niet goed.

Maar hoezo krijg je geen echo, je echo'd die query-string toch ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$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
 
Squeek

Squeek

04/04/2007 19:33:00
Quote Anchor link
Sorry, khad mijn echo gezet nadat mijn query vernietigd wordt :s

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
 
Squeek

Squeek

04/04/2007 19:42:00
Quote Anchor link
Ik heb juist ontdekt dat mijn variabelen niets bevatten als ik ze output in het if-statement waarin de query staat.

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.
 
Frank -

Frank -

04/04/2007 19:52:00
Quote Anchor link
Hoe kan het zijn dat jij niet weet welke tabel je moet updaten? Diezelfde vraag kan worden gesteld voor de kolomnaam.

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.
 
- SanThe -

- SanThe -

04/04/2007 20:05:00
Quote Anchor link
Laat je <form........> tag eens zien.
 
Squeek

Squeek

04/04/2007 20:06:00
Quote Anchor link
Ik heb een php-pagina waar een aantal links op staan.
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.
 
- SanThe -

- SanThe -

04/04/2007 20:12:00
Quote Anchor link
Das al de info komt uit een url. Dan is $_POST dus niet geset.
 
Squeek

Squeek

04/04/2007 20:17:00
Quote Anchor link
Ik weet het probleem al, ik moet mijn variabelen meesturen met mijn form.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
?>
 
- SanThe -

- SanThe -

04/04/2007 20:27:00
Quote Anchor link
Zo is de textarea een $_POST en zijn de rest $_GET waardes.
 
Squeek

Squeek

05/04/2007 10:33:00
Quote Anchor link
probleem opgelost, ik moest mijn variabelen meegeven in mijn form, heb dit gedaan door ze invisible te zetten.

bedankt voor de hulp allen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.