PDO Array Verwerken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Alex L

Alex L

01/05/2011 07:04:48
Quote Anchor link
Het is weer eens tijd om hulp te vragen, ik vroeg me af hoe ik data uit een array, bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$data
= array($user, $password, $email);
?>

als Values bij PDO kan invoeren (dus als ('$data')) zonder het helemaal uit te typen. Ik wil graag een algemeen INSERT script maken zodat ik het niet steeds opnieuw hoef te schrijven in de query zelf maar alleen de array hoef aan te passen.

Op de bovenstaande manier kan PDO het niet uitlezen en denkt hij dat het samen 1 variabel is.
Gewijzigd op 01/05/2011 07:10:40 door Alex L
 
PHP hulp

PHP hulp

09/01/2025 17:49:26
 

01/05/2011 07:11:49
Quote Anchor link
Doorheen loopen? (foreach)
 
Wouter J

Wouter J

01/05/2011 09:11:16
Quote Anchor link
Misschien eens kijken naar prepared statements?
 
Jelmer -

Jelmer -

01/05/2011 14:34:18
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$stmt
= $pdo->prepare("INSERT INTO users (username, password, email) VALUES(?, ?, ?)");
$stmt->execute($data);
?>

Maar let op dat je de volgorde goed in de gaten houdt dan. Één foutje daarin en er gaan rare dingen gebeuren. Daarom gebruik ik zelf liever named placeholders zoals in de tutorial die Wouter J aanhaalt wordt voorgedaan.
 
Wouter J

Wouter J

01/05/2011 15:44:33
Quote Anchor link
@Jelmer, ook dat kan je in een array vewerken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$iQuery
= "INSERT INTO users (username, password, email) VALUES(:name, :pass, :mail)";
$data = Array(
  ':name' => 'Wouter J',
  ':pass' => 'wachtwoord',
  ':mail' => 'mail@phphulp.nl'
);
$stmt = $pdo->prepare($iQuery);
$stmt->execute($data);
?>
 
Alex L

Alex L

02/05/2011 17:26:02
Quote Anchor link
Heb het gevonden, werkt super. Nu moet ik nog alleen een manier vinden om waardes van 2 arrays te combineren.

Bijvoorbeeld

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$arr1
= array ('user');
$arr2 = array ('bob');

$arr3 = // merge here;

print_R ($arr3);

// met als uitput array(user => bob).

?>


iets in die kant, tips zijn welkom. Ben nu zelf aan het kijken op php.net
 

02/05/2011 17:35:51
 
Alex L

Alex L

02/05/2011 17:42:01
Quote Anchor link
Ja daar zit ik nu te kijken, helaas is de standaard merge niet wat ik kan gebruiken dus komt er wat uitgebreidere code aan te pas. Zal topic wel updaten als ik een oplossing heb.
 

02/05/2011 17:49:41
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$array3 = array();

foreach($array1 as $value) {
$array3[] = $value;
}

foreach($array2 as $value) {
$array3[] = $value;
}


Dat moet ook wel werken? Vertel anders eens wat je niet hebt in de standaard merge functie..?
 
Alex L

Alex L

02/05/2011 18:00:42
Quote Anchor link
Haha heb het al, moet dus array_combine hebben.
Erg dat ik daar overeen keek :P

In ieder geval bedankt voor de hulp zover, zal topic weer updaten als ik weer eens vast zit.

Toevoeging op 03/05/2011 01:51:57:

Nieuwe vraag.

Ik heb nu een algemene INSERT en UPDATE query af.
Nu ben ik bezig met selecteren, hij voert de excecute() goed uit maar de resultaten worden niet terug gestuurd ondanks dat ik deze return. Hoe kan ik dit het beste aanpakken?

Voor ieder resultaat een apart nieuw object aanmaken en die terugsturen?
Gewijzigd op 02/05/2011 18:13:55 door Alex L
 



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.