Avatar billede sbay Nybegynder
12. februar 2007 - 09:55 Der er 8 kommentarer

Bruge et array til at lave en insert

Hejsa

Jeg bruger 2 array's til at generere mine insert/updates. Eksempel ses nedenfor. Problemet er, at selvom jeg specificerer nogle af værdierne som strenge, bliver de lavet om til IKKE-strenge i selve inserten. Og så får jeg selvfølgelig en fejl. Nogle ideer til at komme videre.

$IIM_FIELD[$i] = IPROD; $IIM_VALUE[$i] = array($HTTP_POST_VARS[IPROD],'','','');
$i = $i + 1;
$IIM_FIELD[$i] = IDESC; $IIM_VALUE[$i] = array($HTTP_POST_VARS[IDESC],'','','');
$i = $i + 1;
$IIM_FIELD[$i] = IDSCE; $IIM_VALUE[$i] = array($HTTP_POST_VARS[IDSCE],'','','');
$i = $i + 1;
$IIM_FIELD[$i] = SAFLG; $IIM_VALUE[$i] = array(1,1,1,);
$i = $i + 1;
$IIM_FIELD[$i] = IITYP; $IIM_VALUE[$i] = array($HTTP_POST_VARS[IITYP],6,6,6);


SQL:
UPDATE TABEL SET IPROD=Array,IDESC=beskrivelse,IDSCE=UGE 01-16 ,SAFLG=1,IITYP=1

PS. Der er ca 100 felter!!!
Avatar billede fixxxer Nybegynder
12. februar 2007 - 11:09 #1
$HTTP_POST_VARS har været deprecated siden PHP 4.1, så med mindre du benytter en PHP version ældre end den, så brug $_POST i stedet.

Personligt ville jeg foretrække at gøre således:

$felter['IPROD'] = $_POST['IPROD'];
$felter['IDESC'] = $_POST['IDESC'];
$felter['IDSCE'] = $_POST['IDSCE'];
osv.

$tmp = array();
foreach ($felter as $felt => $value) {
    $tmp[] = "$felt = '$value'";
}

"UPDATE tabel SET ".implode(',', $tmp);

Skulle give noget alla:

UPDATE tabel SET IPROD = 'værdi fra IPROD',IDESC = 'noget IDESC',IDSCE='blåbær'
Avatar billede jokkejensen Novice
12. februar 2007 - 11:32 #2
mon ikke der mangler en where clause i den sql sætning.
Avatar billede sbay Nybegynder
12. februar 2007 - 11:41 #3
hmmm, jo men where-delen har jeg styr på :-)

Det der er udfordringen, er at nogle værdier er strenge, andre tal! Det kan jeg ikke lige se ud af fixxxer's løsning, hvordan det løses!
Avatar billede fixxxer Nybegynder
12. februar 2007 - 12:31 #4
UPDATE tabel SET IPROD = 'værdi fra IPROD',IDESC = '45233',IDSCE='blåbær'

er lige så tilladt som

UPDATE tabel SET IPROD = 'værdi fra IPROD',IDESC = 45233,IDSCE='blåbær'


hvis det er det, der giver anledning til problemer?
Avatar billede sbay Nybegynder
13. februar 2007 - 06:48 #5
Også selvom feltet IDESC er angivet som integer i databasen?
Avatar billede fixxxer Nybegynder
13. februar 2007 - 07:57 #6
Ja
Avatar billede showsource Seniormester
13. februar 2007 - 08:27 #7
Du kan jo også
foreach ($felter as $felt => $value) {
    $save_as = (is_numeric($value) ? $value : "'". $value ."'");
    $tmp[] = $felt ."=". $save_as;
}
Avatar billede sbay Nybegynder
04. juli 2007 - 14:40 #8
Fixxxer - smid et svar!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester