Jag har ett skript som ser ut ungefär som exemplet nedan. Jag har tagit bort en del onödiga grejer.
I varje loop i while-satsen ändras datan i $sql och ska skrivas in i en tabell. Jag har med echo kollat att innehållet i $sql verkligen ändras. Ändå skrivs samma sak ner varje gång. Det verkar som antingen php eller MySQL sparar det i någon buffert och tar queryn därifrån istället för strängen som jag försöker skicka med.
Det måste väl gå att rensa den bufferten på något sätt? Eller att tvinga den till att använda strängen jag skickar med istället för det den buffrat?
Jag har försökt med mysql_unbuffered_query() och 'RESET QUERY CACHE' till ingen nytta.
I varje loop i while-satsen ändras datan i $sql och ska skrivas in i en tabell. Jag har med echo kollat att innehållet i $sql verkligen ändras. Ändå skrivs samma sak ner varje gång. ...
Någon som har något förslag?
Hm... Testa att byta till nya variabelnamn inne i while, jämfört med första sql-satsen. Alltså:
Jag skulle råda dig till att skapa en enkel db.php som du inkluderar där du behöver databasen. Innehållande två funktioner, en för Query och en för Insert. Som båda öppnar en koppling till databasen och sen stänger den när de är klara. Då borde du slippa problem med buffrar som hänger kvar. (Och det är smidigare att programmera fler grejor sen.)
<?php
function Insert($sql)
{
$db = mysql_connect("adress.till.databasen.com", "username", "pass") or die("Databasfel.");
mysql_select_db("databasens_namn", $db);
mysql_query($sql);
mysql_close($db);
}
function Query($sql)
{
$db = mysql_connect("adress.till.databasen.com", "username", "pass") or die("Databasfel.");
mysql_select_db("databasens_namn", $db);
$result = mysql_query($sql) or die("SQL-satsen gav inget resultat.");
mysql_close($db);
return $result;
}?>
Jag har aldrig varit med om att samma sida skulle behöva två eller flera connections. Det blir ju rejält overhead att öppna och stänga dem hela tiden. Betänk att hans insert ligger i en whileslinga! Nog måste det gå att hitta en vettigare lösning... ? :q
. :r :r
Jag har hittat felet. Det låg inte i skripet jag höll på att göra utan ett annat som förutsatte att samma användare inte skrev mer än ett pm per sekund.