query met array
$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!
SET username = '". $mysql['username'] ."'";
Variablen buiten de quotes halen...
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)
1
2
3
4
5
6
7
2
3
4
5
6
7
$query = "";
foreach ($mysql as $key => $val)
{
if ($query != "") { $query .= ", "; }
$query .= "$key = '$val'";
}
$query = "INSERT INTO users SET $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
@Willem vp: slimme manier om die komma en die spatie zo toe te voegen!
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 zo moeilijk doen hoor :P
Boaz:
Ja, maar ik denk dat je op het einde een komma te veel hebt...
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.
@Robert: inderdaad. Ik heb het ook even extra nagekeken en het klopt.
Gewijzigd op 01/01/1970 01:00:00 door mic
$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
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.
$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...