24. oktober 2013 - 23:16
Der er
9 kommentarer og 1 løsning
Array ind i database
Hej Eksperter. Jeg har en textarea, som jeg gerne vil have lagt ord for ord ind i min database. Hvad jeg har gjort indtil videre: <textarea class="text" name="content"></textarea> $content = $_POST['content']; $contentPieces = explode(" ", $content); Nu vil jeg så gerne have lagt alle contentPieces ind i min database, så de ligger i hver sin række. Håber i kan hjælpe mig!
Annonceindlæg fra Infor
24. oktober 2013 - 23:51
#1
Enten en INSERT per raekke eller brug af den MySQL specifikke feature hvor en enkelt INSERT kan have flere values.
25. oktober 2013 - 22:34
#2
Har du mulighed for at give et eksempel på det? Det er jo tilfældigt hvor mange elementer der ligger i arrayet, så skal man ikke have en måde, at kalde til hvert enkelt element, så som: INSERT INTO table VALUES('', '$array[element])"; ?
25. oktober 2013 - 23:54
#3
du skal jo have en for loekke som itererer over array
03. november 2013 - 09:34
#4
Det gøres sådan: <?php $content = $_POST['content']; $contentPieces = explode(" ", $content); $db_host = "??"; $db_name = "??"; $db_user = "??"; $db_pass = "??"; $con = mysql_connect("$db_host","$db_user","$db_pass"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("$db_name", $con); for ($i = 0; $i <= (count($contentPieces)-1); $i++) { $sql = "INSERT INTO mintabel (kolonne) VALUES ('". str_replace("'", "''",$contentPieces[$i]). "')"; mysql_query($sql,$con); } mysql_close($con); ?> Du skal lige rette "mintabel" og "kolonne". Og indstillingerne hvor der står "??".
03. november 2013 - 15:04
#5
for ($i = 0; $i <= (count($contentPieces)-1); $i++) { vil man normalt lave som: for ($i = 0; $i < count($contentPieces); $i++) { og: str_replace("'", "''",$contentPieces[$i]) er et hack - som absolut minimum boer bruges mysql_real_escape_string, men nyere og bedre loesninger eksisterer.
03. november 2013 - 15:39
#6
Gør det nogen forskel om man bruger mysql_real_escape_string frem for str_replace ud over at jeg kan se at mysql_real_escape_string erstatter ' med \' og \ med \\ ?
03. november 2013 - 16:56
#7
"Other than that, how was the play, Mrs. Lincoln?" Proev on indsaet: '\\\\////' og se om du kan lide hvad der bliver indsat. Proev og indsaet: 'abc\' og se hvad MySQL siger. Sidstnaevnte problem kan ogsaa i mange sammenhaeng (men vistnok ikke i denne) bruges til SQL injection. str_replace duer ikke!
03. november 2013 - 17:25
#8
Tak jeg kan godt se problemet. '\\\\////' bliver til '\\////' 'abc\' kan slet ikke udføres.
04. november 2013 - 12:48
#9
Tak for svar! Jeg fik løst problemet på en lidt anden måde, men jeg vil nu gerne dele pointene imellem jer :)
05. november 2013 - 01:27
#10
svar fra mig
Computerworld tilbyder specialiserede kurser i database-management