K++Medlem sedan juli 2002183 inlägg
Försöker komma på en funktion som underlättar alla j*dra inserts till databaser. Funktionen ska ta emot ett antal okända namn med värden från vanliga txt-fält / annat.
Tänker mig en funktion liknande denna;
function globalinsert($db,$tabell)
{
$g_ins = new c_layer;
$g_ins->connect($db);
$sql = "INSERT INTO $tabell (";
$sql .= ??????????: # Alla namn separerade med komma
$sql .= ") VALUES(";
$sql .= ??????????; #Alla värden dvs $_POST['xxx'],$_POST['yyy']
$sql .= ")";
$sql = extract all values
$g_ins->query( $sql );
$g_ins->close();
.
}
Is this possible?
Patrik81Medlem sedan okt. 2001537 inlägg
Hej :)
Vet scriptet om fältnamnen i förväg eller kan dessa variera med?
Jag har en liten fundering på om man inte skulle kunna göra så att man döper formulärfälten till samma saker som fältnamnen i databasen (möjlig säkerhetsrisk iofs då man ger ut namnen på fält i tabellen, det är ju aldrig bra) och sedan med hjälp av get_defined_vars(); och funktionen som står i kommentarerna för den funktionen på php.net ( http://se.php.net/manual/en/function.get-defined-vars.php )
Funktionen han/hon döpt till "generateDebugReport"
Modifierar man denna så får man ju snabbt och lätt ut både variabelnamnet, och det tillhörande värdet, och borde således kunna pluppa in det i din sql-kod.
Vad tror du om det?
MVH Patrik
K++Medlem sedan juli 2002183 inlägg
Hej igen Patrik81! Fast det är nog en annan historia.
Jag löste det på ett litet annorlunda sätt;
$arr = get_defined_vars();
$postcrap = $arr[HTTP_POST_VARS];
$nycklar = implode(",",array_keys($postcrap));
$falt = "'" . implode("','",array_values($postcrap)) . "'";
MeleaMedlem sedan juli 20032 667 inlägg
Låter intressant, kan du förklara dig lite mer hur du löste det? Hur funkar koden osv?
K++Medlem sedan juli 2002183 inlägg
Jag satt och pillade mig lite i naveln (tog som vanligt bort lite navelludd) och så löste det sig. Det är en ganska enkel lösning istället för att använda massa for satser. Jag har samma namn på fälten som fälten i databaserna. Och koden därovan skapar en del av sql-satsen. Dvs, fältnamnen och värdena i rättformat. Bara att lägga till lite parenteser så är den komplett.
$sql = "INSERT INTO $dbset (" . $nycklar . ") VALUES (" . $falt . ")";