query met array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mic

mic

15/06/2006 21:16:00
Quote Anchor link
Weet er iemand of en hoe je een array kan gebruiken in een insert? zoals bijvoorbeeld :
$query = "INSERT INTO users SET username ='$mysql['username']'";

Dit geeft een probleem op deze manier. Wss heeft het iets met de quotes te maken, maar ik vind het niet.

Bestaat er een mogelijkheid om de hele array in één keer toe te voegen? Zonder de afzonderlijke elementen te moeten toevoegen?

bedankt!
 
PHP hulp

PHP hulp

16/11/2024 14:01:39
 
Eris -

Eris -

15/06/2006 21:21:00
Quote Anchor link
$query = "INSERT INTO users
SET username = '". $mysql['username'] ."'";

Variablen buiten de quotes halen...
 
Willem vp

Willem vp

15/06/2006 22:39:00
Quote Anchor link
Normaal gesproken moet je een niet-numerieke array-index tussen quotes zetten, omdat de index in een string-context moet staan.

In jouw geval gebruik je je array-waarde binnen een string, dus staat de array-index al in een string context. In dat geval moet je dus geen quotes gebruiken:

$query = "INSERT INTO users SET username ='$mysql[username]'";

Voor wat betreft het tweede deel van je vraag: Als de array-index overeenkomt met je SQL veldnaam, kun je het volgende doen (ongetest):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$query = "";
foreach ($mysql as $key => $val)
{
   if ($query != "") { $query .= ", "; }
   $query .= "$key = '$val'";
}
$query = "INSERT INTO users SET $query";
Gewijzigd op 01/01/1970 01:00:00 door Willem vp
 
Jan Koehoorn

Jan Koehoorn

15/06/2006 23:06:00
Quote Anchor link
@Willem vp: slimme manier om die komma en die spatie zo toe te voegen!
 
Bo az

Bo az

15/06/2006 23:10:00
Quote Anchor link
Jan:
@Willem vp: slimme manier om die komma en die spatie zo toe te voegen!


Ja, maar ik denk dat je op het einde een komma te veel hebt...
 
Erik Rijk

Erik Rijk

15/06/2006 23:13:00
Quote Anchor link
die haal je er dan toch weer af :p
niet zo moeilijk doen hoor :P
 
Robert Deiman

Robert Deiman

15/06/2006 23:22:00
Quote Anchor link
Boaz:
Jan:
@Willem vp: slimme manier om die komma en die spatie zo toe te voegen!


Ja, maar ik denk dat je op het einde een komma te veel hebt...


Niet waar! Hij doet elke keer EERST de comma en DAARNA pas de kolomnaam=waarde.
Dus er komt geen komma op het einde.
 
Jan Koehoorn

Jan Koehoorn

15/06/2006 23:32:00
Quote Anchor link
@Robert: inderdaad. Ik heb het ook even extra nagekeken en het klopt.
 
Mic

mic

16/06/2006 01:43:00
Quote Anchor link
woow in elk geval bedankt! Dit kan ik zeker allemaal gebruiken! Er bestaat toch ook zoiets als VALUES om een hele array in één keer toe te voegen of heb ik het mis? Heb al proberen zoeken op mysql.com, maar de zoekterm values komt nogal veel voor ;)
Gewijzigd op 01/01/1970 01:00:00 door mic
 
Willem vp

Willem vp

16/06/2006 17:50:00
Quote Anchor link
Dat zou inderdaad ook kunnen... Je zou dan zoiets kunnen doen:

$query = "INSERT INTO users (" . array_keys($mysql)
. ") VALUES (" . implode(',', $mysql) . ")";

Maar ik weet niet zeker of PHP garandeert dat de keys en de values in dat geval in dezelfde volgorde staan. De foreach() loop vind ik dan ook veiliger.
Gewijzigd op 01/01/1970 01:00:00 door Willem vp
 
Bo az

Bo az

16/06/2006 19:43:00
Quote Anchor link
Willem:
Dat zou inderdaad ook kunnen... Je zou dan zoiets kunnen doen:

$query = "INSERT INTO users (" . array_keys($mysql)
. ") VALUES (" . implode(',', $mysql) . ")";

Maar ik weet niet zeker of PHP garandeert dat de keys en de values in dat geval in dezelfde volgorde staan. De foreach() loop vind ik dan ook veiliger.


array_keys geeft een array terug, daar moet je dan dus ook nog even implode over heen halen...
 



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.