Hallo,
ik heb een aantal kolommen met verschillende bv:
naam waarde1 waarde2 waarde3
blab 123423 6743 12343
blub 1234 1234 1234
als ik een mysql_query doe en de dikgedrukte rij selecteer, en daar mysql_fetch_array(query) doe, krijg je zo'n array:
[0] => blab
[naam] => blab
[1] => 123423
[Waarde1] => 123423
[2] => 6743
[waarde2] => 6743
[3] => 12343
[waarde3] => 12343
ik heb het nummer van de key van deze array opgeslagen in een bepaalde variable. (bv: 3). Hoe kan ik nu een variabele maken die de NAAM van de kolom (in dit geval 'waarde3') heeft?
ik heb het al met ASSOC en NUM geprobeerd, maar dat mislukt omdat de getallen hetzelfde kunnen zijn.
alvast bedankt
EDIT: OPGELOST door gebruik van mysql_field_name
- MySQL query rij
-
28-02-2011, 19:02 #1
- Berichten
- 79
- Lid sinds
- 14 Jaar
MySQL query rij
Laatst aangepast door T.Voskuil : 01-03-2011 om 17:46 Reden: OPGELOST door gebruik van mysql_field_name
-
-
28-02-2011, 19:07 #2
- Berichten
- 980
- Lid sinds
- 17 Jaar
Re: MySQL query rij
-
01-03-2011, 13:50 #3
- Berichten
- 79
- Lid sinds
- 14 Jaar
Re: MySQL query rij
ik heb het geprobeerd met extract maar dan kun je toch ook alleen nog maar de waardes (de getallen) uitvinden?
Kan iemand mij vertellen hoe ik dmv extract van een bepaalde key de naam van de kolom kan krijgen? of me op weg helpen?
-
01-03-2011, 13:56 #4
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: MySQL query rij
mysql_fetch_array gebruikt standaard het result-type MYSQL_BOTH, wat inhoud dat er een numerieke en associatieve array wordt terug gestuurd.
Je kunt dit zelf sturen door:
mysql_fetch_array($query, MYSQL_ASSOC);
of
mysql_fetch_array($query, MYSQL_NUM);
aan te geven in je script. De eerste stuurt je terug:
[naam] => blab
[Waarde1] => 123423
[waarde2] => 6743
[waarde3] => 12343
En de tweede:
[0] => blab
[1] => 123423
[2] => 6743
[3] => 12343
MYSQL_BOTH maakt dus een array aan met beide keys.
Aanvullend bericht:
Sorry, ik las het verkeerd :-) Wil je de veldnamen in een array krijgen?Laatst aangepast door Joshua de Gier : 01-03-2011 om 13:58 Reden: Automatisch samengevoegd.
-
01-03-2011, 13:59 #5
- Berichten
- 79
- Lid sinds
- 14 Jaar
Re: MySQL query rij
ja dat snap ik, maar hoe kun je nu als je de weet dat de key van de NUM array [3] is, de string 'waarde3' achterhalen d.m.v. PHP?
Als het kan zou ik de veldnamen in zo'n array willen hebben:
[0] => Naam
[1] => waarde1
[2] => waarde2
als iemand een andere manier weet om de kolomnaam te achterhalen zonder dat je eerst deze array maakt zijn die ook heel welkomLaatst aangepast door T.Voskuil : 01-03-2011 om 14:06
-
01-03-2011, 15:08 #6
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: MySQL query rij
SHOW COLUMNS FROM `tabelnaam`;
Die haalt de velden uit de tabel en zet ze in een array.
http://dev.mysql.com/doc/refman/5.0/...w-columns.html
-
01-03-2011, 18:03 #7
- Berichten
- 79
- Lid sinds
- 14 Jaar
Re: MySQL query rij
weet iemand toevallig ook waarom dit niet werkt?
echo $fieldnamen;
mysql_query("UPDATE table1 SET $fieldnamen='$iValue' WHERE Naam='$sNaam'");
als ik naar de pagina kijk naar de echo van $fieldnamen staat er bv. kolom1.
maar als ik bovenstaand script gebruik vult hij niks in in de database.
Terwijl als ik onderstaand script gebruik:
mysql_query("UPDATE table1 SET kolom1='$iValue' WHERE Naam='$sNaam'");
hij het wel doet.
Weet iemand hoe ik de variabele kolomnaam (de string opgeslagen in $fieldnamen) kan gebruiken in de query?
-
01-03-2011, 18:13 #8
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: MySQL query rij
Probeer eens:
mysql_query("UPDATE table1 SET `{$fieldnamen}` = '{$iValue}' WHERE Naam = '{$sNaam}'");
Moet het overigens niet Kolom1 zijn toevallig? Aangezien je 'Naam' ook met een hoofdletter hebt.
-
01-03-2011, 18:31 #9
- Berichten
- 79
- Lid sinds
- 14 Jaar
Re: MySQL query rij
accolades plaatsen heeft helaas ook geen zin.
en de kolommen zijn allemaal zonder hoofdletters.
=(
-
01-03-2011, 18:50 #10
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: MySQL query rij
Haal de mysql_query() eens weg en echo eens wat ertussen in staat; dus:
echo "UPDATE table1 SET $fieldnamen='$iValue' WHERE Naam='$sNaam'";
Dan zie je direct wat je krijgt, probeer dat eens in PHPMyAdmin te plaatsen, als het aan de query ligt zie je het daar en anders zie je misschien een foutje in de query die je probeert uit te voeren.
-
01-03-2011, 21:00 #11
- Berichten
- 79
- Lid sinds
- 14 Jaar
Re: MySQL query rij
He? das raar. Als ik echo UPDATE doe krijg ik:
UPDATE table1 SET price6='444' WHERE Naam='wtop
En als ik dat invul in PHPMyAdmin vult hij hem wel in in de table!!!
Ik denk dat hij zoekt naar een kolom genaamd $fieldnamen? Hoe zou ik dit kunnen voorkomen (als dit het is)?
Wat zou het anders kunnen zijn?
-
01-03-2011, 21:08 #12
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: MySQL query rij
Nee dat zou alleen het geval zijn als je de query tussen single quotes zet. Wel mis je op het einde een single quote, geen idee of dat het probleem kan zijn.
Wat je kunt proberen om er zeker van te zijn is;
mysql_query("UPDATE tabel SET ".$fieldnamen." = '".$iValue."' WHERE ....");
de rest van je query even aanvullen. Eventueel nog backticks om de veldnaam plaatsen.
-
01-03-2011, 21:11 #13
- Berichten
- 79
- Lid sinds
- 14 Jaar
Re: MySQL query rij
oke nou in ieder geval bedankt voor uw hulp.
Ik hoop dat iemand anders in dit topic de oplossing nog weet?
-
01-03-2011, 21:15 #14
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: MySQL query rij
Plaats je scripts eens hier..
-
01-03-2011, 21:38 #15
- Berichten
- 79
- Lid sinds
- 14 Jaar
Re: MySQL query rij
PHP Code:<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST'){
/*connecten*/
mysql_connect("localhost", "*****", "*****") or die(mysql_error());
mysql_select_db("database1") or die(mysql_error());
foreach($_POST as $sWeapon => $iValue){
if(is_numeric($iValue)){
$query2 = mysql_query("SELECT * FROM table1 WHERE Naam='$sWeapon'");
$aCurrentPrices = mysql_fetch_array($query2, MYSQL_NUM);
$kolomnr = 1;
$nullcheck = false;
while($nullcheck == false){
$currentvalue = $aCurrentPrices[$kolomnr];
if(is_null($currentvalue)){
$nullcheck = true;
$query_output = mysql_query("SELECT * FROM table1 WHERE Naam='$sWeapon'");
for ($i = $kolomnr; $i < $kolomnr + 1; $i++) {
$fieldnamen = mysql_field_name($query_output, $i)."<br/>";
echo $fieldnamen;
mysql_query("UPDATE table1 SET $fieldnamen='$iValue' WHERE Naam='$sWeapon'");
}
}
else{
$kolomnr = $kolomnr + 1;
}
}
/*aantal updaten*/
$query = mysql_query("SELECT * FROM table1 WHERE Naam='$sWeapon'") or die(mysql_error());
$row = mysql_fetch_row($query) or die(mysql_error());
$aantalvoor = ($row[1]);
$aantalna = $aantalvoor + 1;
mysql_query("UPDATE table1 SET aantal='$aantalna' WHERE Naam='$sWeapon'") or die(mysql_error());
}
}
}
?>
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic