Hallo medetweakers,
Ik heb een vraag die mij al enkele uren bezig houdt. Ik wil een functie schrijven die informatie voor mij in een database zet. Alleen die informatie die in de database moet komen zit in een array, en is dynamisch. Het aantal gegevens in de array wisselt.
Nu is de array zo opgebouwd:
Field_name is het veld van de database, en value de waarde die in de database gestopt moet worden.
Nu heb ik hele stukken op php.net gelezen, en daar kwam toch uit de functie implode. Nu ben ik daar mee aan de slag gegaan. Echter, de value's zijn niet statisch. Als je hem in dit formaat zet:
dan krijg je op het einde
(De laatste comma moet dus weg).
Tot nu toe heb ik dit:
Bij de eerste implode schijnt het goed te gaan, krijg je netjes value,value,value alleen als er quote's aan te pas komen ('value','value') krijg ik het niet voor elkaar.
De output van bovenstaande is dan ook:
The quote's staan niet goed. Ik heb al alle, in mijn ogen mogelijke combinaties gedaan. PHP.net geraadpleegt, comments gelezen op php.net, echter kan ik zelfs nu nog niet aan een oplossing komen. En ik weet gewoon dat de oplossing héél simpel moet zijn, echter lukt niet.
En dan nog over de methode. Volgens mij moet dit beter/sneller kunnen? Of moet je persé met implode spelen.
Als ik de desbetreffende regel verander in dit:
word het al beter, output:
Bij een 3e variable word het duidelijker, de output is bij een LEEG id veld:
Je mist dus op het einde een quote, behalve bij de laatste value.
Ik hoop dat ik duidelijk ben geweest en genoeg werk van mijn topic heb gemaakt
update:
Is hem geworden dus, deze werkt gelukkig wel. Ik denk dat ik te lang gespint heb op dit probleem waardoor je helemaal van de kaart raakt
Maar goed, blijft nog wel; is er een betere, cq nettere manier?
Ik heb een vraag die mij al enkele uren bezig houdt. Ik wil een functie schrijven die informatie voor mij in een database zet. Alleen die informatie die in de database moet komen zit in een array, en is dynamisch. Het aantal gegevens in de array wisselt.
Nu is de array zo opgebouwd:
PHP:
1
2
3
| $array = array ( 'field_name' => 'value' ); |
Field_name is het veld van de database, en value de waarde die in de database gestopt moet worden.
Nu heb ik hele stukken op php.net gelezen, en daar kwam toch uit de functie implode. Nu ben ik daar mee aan de slag gegaan. Echter, de value's zijn niet statisch. Als je hem in dit formaat zet:
code:
1
| 'value', |
dan krijg je op het einde
code:
1
| VALUES('value1', 'value2','value2',); |
(De laatste comma moet dus weg).
Tot nu toe heb ik dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| function mysql_insert_assoc ($dbTable, $userArray) { // Find all the keys (column names) from the array $my_array $columns = array_keys($userArray); // Find all the values from the array $values = array_values($userArray); // We compose the query $sql = "insert into `$dbTable` "; // implode the column names, inserting "\", \"" between each (but not after the last one) // we add the enclosing quotes at the same time $sql .= "(\"" . implode("\", \"", $columns) . "\")"; $sql .= " values "; // Same with the values $sql .= "('" . implode(", ", $values) . "')"; echo "<table bgcolor=yellow><tr><td>" . $sql . "</td></tr></table>"; $result = mysql_query($sql); if ($result) { echo "The row was added sucessfully"; return true; } else { echo ("The row was not added<br>The error was" . mysql_error()); return false; } } |
Bij de eerste implode schijnt het goed te gaan, krijg je netjes value,value,value alleen als er quote's aan te pas komen ('value','value') krijg ik het niet voor elkaar.
De output van bovenstaande is dan ook:
code:
1
| insert into `users` ("uName", "uPassword") values ('harry, bc80c41c10827a38b1c65a40e8f6bf7180284909') |
The quote's staan niet goed. Ik heb al alle, in mijn ogen mogelijke combinaties gedaan. PHP.net geraadpleegt, comments gelezen op php.net, echter kan ik zelfs nu nog niet aan een oplossing komen. En ik weet gewoon dat de oplossing héél simpel moet zijn, echter lukt niet.
En dan nog over de methode. Volgens mij moet dit beter/sneller kunnen? Of moet je persé met implode spelen.
Als ik de desbetreffende regel verander in dit:
PHP:
1
| $sql .= "('" . implode(", '", $values) . "')"; |
word het al beter, output:
code:
1
| insert into `users` ("uName", "uPassword") values ('harry, 'bc80c41c10827a38b1c65a40e8f6bf7180284909') |
Bij een 3e variable word het duidelijker, de output is bij een LEEG id veld:
code:
1
| insert into `users` ("uID", "uName", "uPassword") values (', 'harry, 'bc80c41c10827a38b1c65a40e8f6bf7180284909') |
Je mist dus op het einde een quote, behalve bij de laatste value.
Ik hoop dat ik duidelijk ben geweest en genoeg werk van mijn topic heb gemaakt
update:
PHP:
1
| $sql .= "('" . implode("', '", $values ) . "')"; |
Is hem geworden dus, deze werkt gelukkig wel. Ik denk dat ik te lang gespint heb op dit probleem waardoor je helemaal van de kaart raakt
Maar goed, blijft nog wel; is er een betere, cq nettere manier?
[ Voor 4% gewijzigd door RedHat op 10-03-2009 20:13 ]