/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hvorfor bliver der indsat dubletter i mysq~
Fra : MooreHojer


Dato : 23-10-07 20:40

Hej NG

Følgende kode:

<------------- KODE START ------------->
$sql_query = "INSERT INTO galleri_kategori (navn, beskrivelse,
oprettet, skaber) values('$name', '$description','" . date(d) . "-" .
date(m) . "-" . date(Y) . "',1)";
mysql_query($sql_query);
<------------- KODE SLUT ------------->

giver af en eller anden grund dobbelt resultat i databasen.
I stedet for at indsætte en record indsætter den 2 identiske records.

Er der nogen der kan forklare hvorfor?

Jeg har tjekket at hvis jeg udkommentere de to linier så kommer der
ingen nye records i databasen så det skyldes ikke dobbelt kode nogen
steder....

Hele kildekoden kan ses her:
www.jannieogjakob.dk/source.txt

På Forhånd Tak!

--
MooreHojer


 
 
Keld Nygaard (24-10-2007)
Kommentar
Fra : Keld Nygaard


Dato : 24-10-07 08:20

><------------- KODE SLUT ------------->
>
>giver af en eller anden grund dobbelt resultat i databasen.
>I stedet for at indsætte en record indsætter den 2 identiske records.
>
>Er der nogen der kan forklare hvorfor?


Prøv at echo din $sql_query ud istedet for at eksekvere den, så kan du se om
det er din for-løkke der er noget galt med. Kommer hver INSERT kun en gang,
så prøv at kopier en af dem ind i phpmyadmin (eller hvad du nu måtte bruge),
og
se om det giver samme resultat....

--
Mvh
Nygaard
www.nygaard.eu



MooreHojer (24-10-2007)
Kommentar
Fra : MooreHojer


Dato : 24-10-07 09:44

> Prøv at echo din $sql_query ud istedet for at eksekvere den, så kan du se om
> det er din for-løkke der er noget galt med.

Den udskriver kun én...
Resultatet kan ses her:
http://www.jannieogjakob.dk/galleri/newPictures/newCateAuto.php

> Kommer hver INSERT kun en gang,
> så prøv at kopier en af dem ind i phpmyadmin

Den indsætter kun én....

--
MooreHojer


Keld Nygaard (24-10-2007)
Kommentar
Fra : Keld Nygaard


Dato : 24-10-07 10:33

>Den indsætter kun én....


Kan det tænkes du har en "mysql_query" et andet sted i din kode?
Prøv at sæt $sql_query = ""; efter du har eksekveret den...

--
Mvh
Nygaard
www.nygaard.eu



MooreHojer (24-10-2007)
Kommentar
Fra : MooreHojer


Dato : 24-10-07 10:40

> Kan det tænkes du har en "mysql_query" et andet sted i din kode?
> Prøv at sæt $sql_query = ""; efter du har eksekveret den...

jeg udkommenterede den i stedet og nu sker der slet ikke noget...


Keld Nygaard (24-10-2007)
Kommentar
Fra : Keld Nygaard


Dato : 24-10-07 12:02

>> Kan det tænkes du har en "mysql_query" et andet sted i din kode?
>> Prøv at sæt $sql_query = ""; efter du har eksekveret den...
>
>jeg udkommenterede den i stedet og nu sker der slet ikke noget...

Det giver ikke helt samme effekt at udkommentere.
Det der kunne ske, hvis du et andet sted i din kode har en mysql_query er:

$sql_query = "INSERT INTO table......"
mysql_query($sql_query);
....
....
(et andet sted i koden)
mysql_query($sql_query);


- hvilket vil resultere i 2 inserts. Det vil du kunne identificere ved at
tømme $sql_query, hvorved du kun får en record id DB:

$sql_query = "INSERT INTO table......";
mysql_query($sql_query);
$sql_query = "";
....
....
(et andet sted i koden)
mysql_query($sql_query);


--
Mvh
Nygaard
www.nygaard.eu



MooreHojer (24-10-2007)
Kommentar
Fra : MooreHojer


Dato : 24-10-07 17:15

Det må vel give det samme som at udkommentere den mysql_query som jeg
"kender"

Men nu har jeg prøvet begge dele og når jeg tømmer sql_query så
oprettes der stadig 2 record, men udkomenterer jeg min mysql_query
bliver der slet ikke lavet nogen....




MooreHojer (24-10-2007)
Kommentar
Fra : MooreHojer


Dato : 24-10-07 19:02

nu bliver det først rigtigt sjovt

Jeg opretter en fil der kun indeholder følgende kode:

<--------KODE START-------->
require("../../DBconnect.php");

$sql_query = "INSERT INTO galleri_kategori (navn, beskrivelse,
oprettet, skaber) values('navn', 'beskrivelse','" . date(d) . "-" .
date(m) . "-" . date(Y) . "',123)";
mysql_query($sql_query);

echo $sql_query;
<--------KODE START-------->

og den laver samme nummer...
er det så ikke på mysql eller i php at fejlen ligger?

--
MooreHojer



Andreas Andersen (25-10-2007)
Kommentar
Fra : Andreas Andersen


Dato : 25-10-07 21:27

>"MooreHojer" <simonhoejer@gmail.com> wrote in message
>news:1193248934.399414.90300@q5g2000prf.googlegroups.com...
>nu bliver det først rigtigt sjovt
>
>Jeg opretter en fil der kun indeholder følgende kode:
>
><--------KODE START-------->
>require("../../DBconnect.php");
>
>$sql_query = "INSERT INTO galleri_kategori (navn, beskrivelse,
>oprettet, skaber) values('navn', 'beskrivelse','" . date(d) . "-" .
>date(m) . "-" . date(Y) . "',123)";
>mysql_query($sql_query);
>
>echo $sql_query;
><--------KODE START-------->
>
>og den laver samme nummer...
>er det så ikke på mysql eller i php at fejlen ligger?

Har du slet ikke noget HTML udenom koden - evt. noget der kunne få siden til
at loade 2 gange? Du kunne tjekke det ved at vise en alert hver gang siden
hentes. Måske dette: http://bugs.php.net/bug.php?id=10599.

--
Andreas


MooreHojer (29-10-2007)
Kommentar
Fra : MooreHojer


Dato : 29-10-07 14:21

> Har du slet ikke noget HTML udenom koden - evt. noget der kunne få siden til
> at loade 2 gange? Du kunne tjekke det ved at vise en alert hver gang siden
> hentes. Måske dette:http://bugs.php.net/bug.php?id=10599.

Det eneste kode der i filen nu er dette:
<--------KODE START-------->

require("../../DBconnect.php");

$sql_query = "INSERT INTO galleri_kategori (navn, beskrivelse,
oprettet, skaber) values('navn', 'beskrivelse','" . date(d) . "-" .
date(m) . "-" . date(Y) . "',123)";
mysql_query($sql_query);

echo $sql_query;

<--------KODE START-------->

Alt andet er fjernet, så jeg kan ikke se hvordan det skulle ske....



Birger (29-10-2007)
Kommentar
Fra : Birger


Dato : 29-10-07 18:54

"MooreHojer" <simonhoejer@gmail.com> skrev i en meddelelse
news:1193664075.865262.91820@o38g2000hse.googlegroups.com...
> Har du slet ikke noget HTML udenom koden - evt. noget der kunne få siden
> til
> at loade 2 gange? Du kunne tjekke det ved at vise en alert hver gang siden
> hentes. Måske dette:http://bugs.php.net/bug.php?id=10599.

Det eneste kode der i filen nu er dette:
<--------KODE START-------->

require("../../DBconnect.php");

$sql_query = "INSERT INTO galleri_kategori (navn, beskrivelse,
oprettet, skaber) values('navn', 'beskrivelse','" . date(d) . "-" .
date(m) . "-" . date(Y) . "',123)";
mysql_query($sql_query);

echo $sql_query;

<--------KODE START-------->

Alt andet er fjernet, så jeg kan ikke se hvordan det skulle ske....


Hvordan og hvorfra kaldes filen?
Sikker på det ikke bliver gjort to gange?

Dine kald til date() ser forkerte ud for mig. date() skal kaldes med en
streng for formatering.

$dato = date('d')."-".date('m')."-".date('Y'); eller
$dato = date( 'd-m-Y');
Mener i øvrigt at det er smartere at bruge SQL's eget format i databasen, og
formatere datoen når den hentes ud, hvis den skal vises anderledes.
Det vil gøre det væsentligt nemmer at arbejde med databasens data.

$sql_query = "INSERT INTO galleri_kategori (navn, beskrivelse, oprettet,
skaber) values('navn', 'beskrivelse','$dato',123)";

Birger



Andreas Andersen (29-10-2007)
Kommentar
Fra : Andreas Andersen


Dato : 29-10-07 20:12


"MooreHojer" <simonhoejer@gmail.com> wrote in message
news:1193664075.865262.91820@o38g2000hse.googlegroups.com...
Det eneste kode der i filen nu er dette:
<--------KODE START-------->

require("../../DBconnect.php");

$sql_query = "INSERT INTO galleri_kategori (navn, beskrivelse,
oprettet, skaber) values('navn', 'beskrivelse','" . date(d) . "-" .
date(m) . "-" . date(Y) . "',123)";
mysql_query($sql_query);

echo $sql_query;

<--------KODE START-------->

Alt andet er fjernet, så jeg kan ikke se hvordan det skulle ske....


Det skal altså næsten være fordi det på en eller anden bliver kørt 2 gange -
det må indgå i en eller anden kontekst. Hvis der var så eklatante fejl i
mySQL eller PHP ville nogen nok have opdaget det. Hvad er der i
DBconnect.php? Prøv at indsætte:

<script language="javascript">
alert('inserting');
</script>

et sted i filen.

--
Andreas


MooreHojer (01-11-2007)
Kommentar
Fra : MooreHojer


Dato : 01-11-07 13:04

> Det skal altså næsten være fordi det på en eller anden bliver kørt 2
> gange - det må indgå i en eller anden kontekst.

Det er det bedste af det hele
Jeg kalder filen direkte via adressenlinien....


> Hvad er der i DBconnect.php?


<------KODE START------>

<?php

// INDSTILLINGER FOR DABABASEN
$dbHost = 'nhmysqlsrv01.needhost.dk';
$dbName = 'dbname';
$dbUserName = 'dbusername';
$dbPassword = 'password';

// OPRETTER FORBINDELSE TIL DATABASE
// HVIS DET IKKE LYKKES DØR DEN OG
// UDSKRIVER EN FEJLMEDDELSE
$link_id = mysql_connect($dbHost, $dbUserName, $dbPassword);
if(mysql_select_db($dbName, $link_id)) {
//SUCCESS - DER ER NU FORBUNDET TIL DB
}
else {
die ("Kunne ikke forbinde");   
}
?>

<------KODE SLUT------>

> Prøv at indsætte:
> <script language="javascript">
> alert('inserting');
> </script>

Den kom kun frem én gang...

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408195
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste