XepheXMedlem sedan jan. 20035 inlägg Hej! Sitter och pillar med mitt första script som ska ansluta till MySQL och lägga till 3 poster från ett formulär. Men det vill inte fungera. Scriptet är taget från idg.se (http://www.idg.se/webstudio/pub/article.asp?id=116)
Den är ju skriven för en accses-databas, men gissade på att det även gick att använda till MySQL, genom att jag bytta ut Connect.Open raden till MySQL's variant. Men ack nej.
Felmeddelandet som jag får är:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
En OLE DB-åtgärd i flera steg genererade fel. Kontrollera alla OLE DB-statusvärden som finns tillgängliga. Inget arbete utfördes.
/Fredde/data/add.asp, line 17
Och koden är som följer:
<html>
<!-- #include virtual="/Fredde/data/adovbs.inc" -->
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={MySQL};SERVER=localhost;"+ "DB=fredde;PORT=3306;UID=xxxx;PWD=;"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM adresser"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
RecSet.AddNew
RecSet("Namn") = Request.Form("namn")
RecSet("Efternamn") = Request.Form("efternamn")
RecSet("Tele") = Request.Form("tele")
RecSet.Close
Connect.Close%>
Följande uppgifter har nu lagts till i databasen:<p>
Förnamn:<br><b><% =Request.Form("fornamn") %></b><p>
Efternamn:<br><b><% =Request.Form("efternamn") %></b><p>
Adress:<br><b><% =Request.Form("adress") %></b><p>
Lägg till <a href="default.asp">fler poster i adressboken</a>.
</html>
Och rad 17 är
RecSet("Namn") = Request.Form("namn")
Hoppas att ni kan hjälpa migmed detta. Skulle även vara intresserad av länkar till sidor som förklar hur man gör en koppling, och då gärna använda MySQL's språk (om det nu är ett speciellt)
CatZMedlem sedan jan. 20022 440 inlägg request.form("fornamn") ?
För det första rekommenderar jag att du struntar i idg's databas skola helt och hållet. ADO är resurskrävande och svårt att överblicka.
Vill du lägga till saker i din databas ? gör då såhär istället.
dim strNamn, strEfternamn, strTele
strNamn = Request.Form("fornamn")
strEfternamn = Request.Form("efternamn")
strTele = Request.Form("tele")
sql = " insert into adresser(Namn, Efternamn, Tele) " _
& " values('" & strNamn & "', '" & strEfternamn & "', " _
& " '" & strTele & "' "
Connect.Execute sql,,128
Så vad gör då koden? Jo för det första ser du ju att det inte går åt lika mycket rader dvs det blir lättare att begripa vad man skriver. För det andra vete tusan om man kan uppdatera MySQL med ado.
dim deklarerar (talar om för asp scriptet) att jag tänker använda det här namnet som en sträng. str lägger jag till före för att jag ska komma ihåg att det är en sträng (dvs text) jag sparar i allihop.
efter det tilldelar jag strNamn osv det värde i formuläret jag vill de ska ha.
Efter det använder jag mig av SQL för att uppdatera databasen. Vill du köra MySQL som dbs ska du bergis använda sql istället för ado. Connect.execute sql betyder att jag säger åt connect objektet att exekvera (köra) sql.
,,128 säger åt sidan att inte skapa ett recordset (detta ökar prestandan avsevärt.
Hoppas att jag får in dig lite i rätt riktning.
crisse6Medlem sedan dec. 20002 526 inlägg Men nu ar fallet inte ett asp problem, det ar nagot med databasen.
borde inte connectionen vara sa har?
Connect.Open "Driver={MySQL};SERVER=localhost;database=fredde;PORT=3306;UID=xxxx;PWD="
annars, har du senaste ODBC drivisar?
CatZMedlem sedan jan. 20022 440 inlägg Nej det är fel eftersom han anropar fel. Request.Form("namn") skall förmodligen vara Request.Form("fornamn") precis som jag skrev överst....
XepheXMedlem sedan jan. 20035 inlägg Tack för svaren.
CatZ. Gäller detta sätt även när jag hämtar data? Dvs att jag kan skriva sqlsatsen på ungefär samma sätt som man gör i PHP?:
sql = "SELECT namn FROM addresser WHERE namn ='Fredde'"
Connect.Execute sql,,128
Och sen är detta rätt: request.form("namn")
Eftersom att jag försöker att lära mig orkar jag inte skriva så tydlit vad som är vad =)
Återigen tack. Ska kolla upp det lite senare.
crisse6 -> Jag laddade hem senaste stabila versionen från Mysql's webbplats.
LarsGMedlem sedan dec. 200012 464 inlägg Om du hämtar data så måste du alltid använda ett recordset.
sql = "SELECT namn FROM addresser WHERE namn ='Fredde'"
set rs = Connect.Execute(sql)