Har gjort en funktion för att enkelt kunna skriva parameterfrågor och skulle behöva lite kommentarer och kritik på resultatet för att göra den bättre.
Funktionen verkar fungera, har t.ex lyckats inserta lite text i min databas osv.
Dock så vet jag inte hur jag gör för att i select delen få ut en array med all data till den sidan där funktionen kallas, hjälp? :D
där gälten är
parameterSQL(sqlType, table, fields, data, where, whereData, limit)
Och detta är själva funktionen
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Function dbOpen(Connect)
Set Connect = server.createobject("ADODB.Connection")
Connect.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Port=3305;Database=dammtussen;"
'Connect.Open "Driver={MySQL ODBC 3.51 Driver};Server=83.140.162.135;Port=3306;DATABASE=jj745_webshop3; USER=jj745_connyfox; PASSWORD=57tYmX; OPTION=3;"
Set Connect = Connect
End Function
Function dbClose(Connect)
Connect.Close
Set Connect = Nothing
End Function
function parameterSQL(sqlType, table, fields, data, where, whereData, limit)
Set cmd = server.createobject("adodb.command")
cmd.activeConnection = connect
arrFields = split(fields, ",")
arrData = split(data, ",")
arrWhere = split(where, ",")
arrWhereData = split(wheredata, ",")
if where > "" then
wherepart = "WHERE "
for i = 0 to ubound(arrWhere)
wherepart = wherepart & "" & arrwhere(i) & " = ? AND "
next
wherepart = left(wherePart, len(wherepart)-4)
else
wherepart = ""
end if
if limit > "" then
limitPart = " LIMIT " & limit & ""
end if
select case sqlType
case "select"
MySQL = "SELECT " & fields & " FROM " & table & " " & wherePart & " " & limitpart & ""
response.write mysql
case "insert"
for each p in arrFields
datapart = datapart & "?,"
next
mysql = "INSERT INTO " & table & " (" & fields & ") VALUES(" & left(datapart, len(datapart)-1) & ") " & wherePart & " " & limitpart & ""
response.write mysql
case "update"
for i = 0 to ubound(arrFields)
datapart = datapart & "" & arrFields(i) & " = ?, "
next
datapart = left(datapart, len(datapart)-2)
mysql = "Update " & table & " set " & datapart & " " & wherePart & " " & limitpart & ""
response.write mysql
case "delete"
mysql = "Delete from " & table & " " & wherePart & " " & limitpart & ""
response.write mysql
end select
dim strALLdata
if data > "" then
strAllData = strAlldata & data
end if
if data > "" AND wheredata > "" then
strAllData = strAlldata & ","
end if
if wheredata > "" then
strAllData = strAlldata & wheredata
end if
response.write strALLdata
arrExecuteData = split(strALLdata, ",")
cmd.CommandText = MySQL
SET rs = cmd.Execute (, arrExecuteData)
set cmd = nothing
end function
</script>
Dock så vet jag inte hur jag gör för att i select delen få ut en array med all data till den sidan där funktionen kallas, hjälp?
En funktion skall returnera någonting - som du har byggt dina funktioner nu är de sub:ar.
Du returnerar saker från funktionen genom att sist i funktionen tilldela funktionsnamnet ett värde. Om du ser till att du gör en array av resultatet från din select (ex. mha recordsetobjektets metod GetRows()), så är det bara att du skickar tillbaka den.
function parameterSQL(sqlType, table, fields, data, where, whereData, limit)
......
minFetaArray = rs.GetRows()
parameterSQL = minFetaArray
end function
Jag ser också att du alltid skapar ett recordset i slutet av funktionen. Det finns ingen anledning att skapa ett recordset till något som inte returnerar några poster.
Borde fungera om inte recordsetet är EOF - men jag föredrar att göra som i mitt exempel - så man kan stänga alla objekt efter sig innan retur. "Fungerade inte" är en ruskigt dålig felbeskrivning, för övrigt. Felmeddelande? Exakt hur ser koden ut nu då? Hur kallade du på funktionen när det blev fel?