Avatar billede hoejgaard Juniormester
30. oktober 2004 - 12:30 Der er 11 kommentarer og
1 løsning

problem med php/mysql update

Hej.
Jeg har et mystisk problem.
Jeg har kopieret en Mysql database til et andet webhotel, og det samme med php filerne.
Under det nye domæne virker enkelte ting bare ikke. Ka det være fordi der er sket en opdatering af php/Mysql på serveren hvor det ligger, eller hvad ???

Feks følgende bliver ikke opdateret :

<?  $sql = mysql_query("SELECT antal FROM indsaet_invitation WHERE id='$vis'");
                  $r = mysql_fetch_array($sql);
                  $r[0]==$r[0]++;
                   
                  mysql_query("UPDATE indsaet_invitation SET antal='$r[0]' WHERE id='$vis'") or die(mysql_error());

              ?>
Avatar billede hoejgaard Juniormester
30. oktober 2004 - 12:34 #1
på det gamle webhotel hedder det MySQL 3.23.58
og på det nye    MySQL 4.0.21
Avatar billede hoejgaard Juniormester
30. oktober 2004 - 12:35 #2
ligesom det er phpMyAdmin 2.3.2 (gamle)

og (nye)  phpMyAdmin 2.5.7-pl1
Avatar billede bromer Nybegynder
30. oktober 2004 - 12:50 #3
Hvorfor bruger du ikke bare følgende:

mysql_query("UPDATE indsaet_invitation SET antal = antal + 1 WEHRE id = '$vis'");
Avatar billede hoejgaard Juniormester
30. oktober 2004 - 13:28 #4
nu var det ikke et spm om at bruge noget andet men hvorfor det ikke virker som det er .. Men ka da måske prøve det andet der.
Vil gerne have bud på hvad der ka være problemet !
Avatar billede htm Nybegynder
30. oktober 2004 - 13:32 #5
hvor får du $vis fra ? hvis det er fra adresselinien skal du bruge $_GET['vis']

du skal hellere ikke have ' omkring et id felt, hvis det er et alm integer id-felt.

og så vil jeg også anbefale bromers løsning :)


mysql_query("UPDATE indsaet_invitation SET antal = antal + 1 WEHRE id=" . $_GET['vis']);

Og lige for en god ordens skyld, det er sikkert ikke MySQL eller phpMyAdmin der giver dig problemer :) nok snarere PHP.
Avatar billede hoejgaard Juniormester
30. oktober 2004 - 13:40 #6
$vis kommer herfra :
<td  BgColor='#ffffff' class="td9"  align = left width="8%" >&nbsp;<b><? echo "$row[id]"; ?></b><?php echo "<a href=\"semere1.php?vis=".$row['id']."\"><IMG SRC='klik1.gif' border='0'></a>"; ?></td>


og bliver vist i adresselinien, men ikke her :

<td colspan="5" class="td7" ><center><b>Her er invitation nr. <?php echo "$vis"; ?><b></center></td>
Avatar billede htm Nybegynder
30. oktober 2004 - 13:46 #7
Forstod jeg ikke helt :) - øverst virker ? nederst virker ikke?

I så fald er det jo netop du skal bruge $_GET['vis'] i stedet for $vis.

Læs mere her: http://www.php.net/manual/en/language.variables.predefined.php#language.variables.superglobals
Avatar billede hoejgaard Juniormester
30. oktober 2004 - 14:33 #8
ok nu virker det. tak for hjælpen !
Avatar billede hoejgaard Juniormester
30. oktober 2004 - 14:33 #9
læg et svar htm !
Men forstår ikke det virkede på det gamle webhotel ! Gør du ?
Avatar billede bromer Nybegynder
30. oktober 2004 - 14:37 #10
Forklaringen står i det link som htm postede.
Avatar billede htm Nybegynder
30. oktober 2004 - 14:45 #11
Grunden til at det ikke virker på det nye hedder register_globals - når den er slået til on kan du benytte $vis som du vil.
Problemet er at man ikke ved hvor den kommer fram, den prøver sig nemlig frem i den rækkefølge der er defineret i php.ini, standard: EGPCS

dvs. $vis vil se om den eksisterer på denne måde:
$vis ?
$_ENV['vis']
$_GET['vis']
$_POST['vis']
$_COOKIE['vis']
$_SERVER['vis']
ingen variabel sat.

læs her: http://www.php.net/manual/en/security.globals.php
Avatar billede Slettet bruger
31. oktober 2004 - 05:55 #12
Nu har i jo fundet problemet, men jeg vil bare lige gøre opmærksom på noget andet, der også kunne have givet problemer.

PHP har en indstilling, der hedder short_tags. Hvis den er slået fra, kan man ikke nøjes med at skrive <? for at starte en PHP-blok. Så skal man bruge <?php i stedet. Årsagen til at det kunne være interessant at slå den fra er f.eks at så prøver PHP ikke at fortolke en XML-deklaration, som starter således: <?xml

Desuden er $r[0]==$r[0]++; en lidt pudsig konstruktion, som reelt giver PHP besked på at putte værdien af $r[0] over i $r[0] og når det er gjort, skal den forhøjes. For at illustrere:

<?php

header("Content-Type: text/plain");

$a=1;
$b=$a++; 

// Hvad tror du $b indeholder? Lad os udskrive den og se.
echo $b++; // Denne linie giver denne udskrift: 1

// Og så kan vi lige så godt se begge to uden mere pjat.
echo "\nNu er A=$a og B=$b";

?>
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