14. juli 2003 - 18:36
Der er
15 kommentarer og 1 løsning
Fra text fil til mysql
Jeg har noget brugere i en textfil som skal ligges over i en mysql db. txtfil format: ------- nick "auth" "" "access" "flags" nick "auth" "" "access" "flags" ------- CREATE TABLE `users` ( `nick` varchar(32) NOT NULL default '', `auth` int(32) NOT NULL default '0', `access` varchar(32) NOT NULL default '', `flags` varchar(32) NOT NULL default '' ) TYPE=MyISAM; Nogle der kan lave det ?
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Prøv: <?php //forbind til databasen her // $filnavn = "./navnet_på_tekstfilen.txt"; $fp = fopen($filnavn, "r"); WHILE(!FEOF($fp)) { $linie = fgets($fp); if(!ereg(" ", $linie) && $linie != "") { $insert_query = "INSERT INTO users (nick, auth, access, flags) VALUES ('$linie', '"; } else { $data = explode(" ", $linie); $insert_query .= $data[0] . "', '" . $data[1] . "', '" . $data[2] . "')"; } mysql_query($insert_query) OR DIE(mysql_error()); } fclose($fp); ?> //sostack
Får følgende fejl, og kan ik se hvor den er: You have an error in your SQL syntax near ''' at line 1
Hvis IF kriteriet ikke bliver overholdt, når den da ikke INSERT INTO på noget tidspunkt, eller er jeg gal på den ?
Med et par rettelser: <?php //forbind til databasen her // $usernr = 0; $filnavn = "./navnet_på_tekstfilen.txt"; $fp = fopen($filnavn, "r"); WHILE(!FEOF($fp)) { $linie = fgets($fp); if(!ereg(" ", $linie)) { $insert_query[$usernr] = "INSERT INTO users (nick, auth, access, flags) VALUES ('$linie', '"; } elseif($linie == "") { $usernr++; } else { $data = explode(" ", $linie); $insert_query[$usernr] .= $data[0] . "', '" . $data[1] . "', '" . $data[2] . "')"; } } fclose($fp); for($i = 0; $i < count($insert_query); $i++) { mysql_query($insert_query[$i]) OR DIE(mysql_error()); } ?> //sostack
Tror det er de tomme linier der driller, men check det lige på dit system. //sostack
Stadig samme fejl. Den her linie ved da ikke hvor den skal sætte det ind henne: $insert_query[$usernr] .= $data[0] . "', '" . $data[1] . "', '" . $data[2] . "')"; Ellers forstår jeg bare hat af det du har skrevet.
PRøv lige: <?php //forbind til databasen her // $usernr = 0; $filnavn = "./navnet_på_tekstfilen.txt"; $fp = fopen($filnavn, "r"); WHILE(!FEOF($fp)) { $linie = fgets($fp); if(!ereg(" ", $linie)) { $insert_query[$usernr] = "INSERT INTO users (nick, auth, access, flags) VALUES ('$linie', '"; } elseif($linie == "") { $usernr++; } else { $data = explode(" ", $linie); $insert_query[$usernr] .= $data[0] . "', '" . $data[1] . "', '" . $data[2] . "')"; } } fclose($fp); for($i = 0; $i < count($insert_query); $i++) { //mysql_query($insert_query[$i]) OR DIE(mysql_error()); echo $insert_query[$i] . "<br />\n"; } ?> og vis resultatet her. //sostack
INSERT INTO users (nick, auth, access, flags) VALUES ('', '
Har fundet noget af fejlen. Der var en fejl i txt filen. Nu 'virker' den næsten, men den tar kun den sidste entry, og den tar kun "nick" og "flags" med.
14. juli 2003 - 20:02
#10
Så må der stærkere midler til: hvordan ser tekstfilen ud nu? //sostack
14. juli 2003 - 20:07
#11
Jens "1641735" "" "abcdefiju" "ce" Kaj "2740133" "" "abcdefiju" "ce" Anders "1123213" "" "abcdefiju" "ce" Viggo "2387229" "" "abcdefghijklmnopqrstuv" "ce"
14. juli 2003 - 20:09
#12
Så skulle den være der: <?php //forbind til databasen her // $usernr = 0; $filnavn = "./navnet_på_tekstfilen.txt"; $fp = fopen($filnavn, "r+"); WHILE($linie = fgets($fp)) { if(!ereg(" ", $linie)) { $insert_query[$usernr] = "INSERT INTO users (nick, auth, access, flags) VALUES ('$linie', "; } elseif($linie == "") { } else { $linie = ereg_replace(" ", " ", ereg_replace("\"", "", $linie)); $data = explode(" ", $linie); $insert_query[$usernr] .= $data[0] . ", '" . $data[1] . "', '" . $data[2] . "')"; $usernr++; } } fclose($fp); for($i = 0; $i < count($insert_query); $i++) { mysql_query($insert_query[$i]) OR DIE(mysql_error()); //echo $insert_query[$i] . "<br />\n"; } ?> //sostack
14. juli 2003 - 20:14
#13
Så er den næsten perfekt. Der er lige en lille bitte ting. Der forkommer nicks med 'spaces' i, og der stopper den...
14. juli 2003 - 20:23
#14
Prøv: <?php //forbind til databasen her // $usernr = 0; $filnavn = "./navnet_på_tekstfilen.txt"; $fp = fopen($filnavn, "r+"); WHILE($linie = fgets($fp)) { if(!ereg("\"", $linie)) { $insert_query[$usernr] = "INSERT INTO users (nick, auth, access, flags) VALUES ('$linie', "; } elseif($linie == "") { } else { $linie = ereg_replace(" ", " ", ereg_replace("\"", "", $linie)); $data = explode(" ", $linie); $insert_query[$usernr] .= $data[0] . ", '" . $data[1] . "', '" . $data[2] . "')"; $usernr++; } } fclose($fp); for($i = 0; $i < count($insert_query); $i++) { mysql_query($insert_query[$i]) OR DIE(mysql_error()); //echo $insert_query[$i] . "<br />\n"; } ?> //sostack
14. juli 2003 - 20:53
#15
Sådan ! Nu er den som den skal være Mange tak skal du ha
14. juli 2003 - 20:59
#16
velbekomme! //sostack
Vi tilbyder markedets bedste kurser inden for webudvikling