Hallo,

ik heb een probleem met MYSQL. Ik heb een simpel CMS welke tekst (HTML) opslaat in een Database dmv. het insert commando. Heel normaal dus, alles werkt ook perfect alleen nou wordt telkens 1 rij na een paar uur weer automatisch verwijderd. Kijk ik in PHPMyadmin dan zie ik hier overhead van 808 bytes. Als ik de tabel optimaliseer is de overhead weg, dan voer ik weer opnieuw de gegevens van de row in en er is dan geen overhead. Pas na een paar uur flushed mysql de row en krijg ik weer overhead. Het vreemde is dat ie het steeds bij 1 row doet, de andere rows zijn wel goed.

Heeft iemand een idee waar dit aan kan liggen?
moet je eens gaan kijken of je ook cron jobs of iets dergelijks hebt ;)
zover ik weet niet en een cronjob kan toch zomaar geen overhead veroorzaken?
Die overhead zou ik even laten voor wat het is, ik zou me meer zorgen maken over records die zo maar verdwijnen! Er is helemaal niets of niemand die deze delete uitvoert en toch wordt het record verwijderd? Als ik jou was, zou ik hier even heel diep induiken, dit is echt niet goed.

Ga ook eens checken of jouw database goed is beschermd tegen SQL-injection. Het zou natuurlijk kunnen dat één of andere 'grappenmaker' dit record verwijderd.
Hoi Martin,

laat de code eens zien waarmee je die insert doet?
Naja insert, update :)... simple as it can be:

$query = "UPDATE pagina SET inhoud='$inhoud' WHERE id='$id'";

mysql_query($query) or die ("Wegschrijven naar Database mislukt.");

Okee, en laat de code eens zien waarmee je $inhoud en $id een waarde geeft? Is dat gewoon:

<?php
// variabelen ophalen
$id = $_POST['id'];
$inhoud = $_POST['inhoud'];
?>
ja klopt:

<?php
$id = $_POST['id'];
$inhoud = $_POST['inhoud'];

$query = "UPDATE pagina SET inhoud='$inhoud' WHERE id='$id'";

mysql_query($query) or die ("Wegschrijven naar Database mislukt.");
?>

$inhoud bevat HTML wat wordt opgemaakt door een richt text editor (FCKeditor). Het vreemde is dat alle 10 andere paginas wel goed werken en dat hij telkens 1 (ID nummer 9) verwijdered na een aantal uur. :S
Verander dat eerst maar eens in:

<?php
// variabelen ophalen
$id = htmlspecialchars ($_POST['id']);
$inhoud = htmlspecialchars ($_POST['inhoud']);
?>

MySQL verwijdert niet zomaar automatisch records.

edit: en mocht dat niet helpen, dan kun je altijd nog een anti sql-injection functie gebruiken, maar daarover later meer.
Hoi Jan,

Als ik de code van jou gebruik schrijft ie helemaal niks meer weg naar de database... echter ik heb het iets aangepast en nu werkt het wel;

<?PHP
$verwerkid = htmlspecialchars($_POST['id']);
$verwerkinhoud = htmlspecialchars ($_POST['inhoud']);

$query = "UPDATE pagina SET inhoud='$verwerkinhoud' WHERE id='$verwerkid'";
mysql_query($query) or die ("Wegschrijven naar Database mislukt.");
?>

Ik heb nu data ingevoerd dmv het bovenstaande script, en nu maar kijken hoe lang het duurt voordat de row weer leeg is. :)

Blijf het zo vreemd vinden ik heb al veel meer CMS'en lopen maar hier nog nooit problemen mee gehad.
Zoals ze ook aangaven, het is waarschijnlijk geen fout in je database, maar een programmeer fout waardoor mensen jou database kunnen beïnvloeden. (MySQLInjection)

Reageren