Likes Likes:  0
Resultaten 1 tot 10 van de 10
Geen
  1. #1
    StriKe
    Eigenaardig probleem in SQL query
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Eigenaardig probleem in SQL query

    Ik heb een groot aantal bestanden waarvan de inhoud nu in een database
    terecht moet komen; op zich geen probleem maar toch zit ik bij het
    uitvoeren van de insert opdracht in PHP met volgende foutmelding:

    You have an error in your SQL syntax; check the manual that corresponds
    to your MySQL server version for the right syntax to use near 'Access
    denied'); ?> Op de hoek van de Edingsesteenweg en de Dr. De Rolaan in
    Mo' at line 3

    De bestanden zijn allemaal als volgt opgebouwd:

    <?php die('Access denied'); ?>
    een korte tekst|<||<|webmaster|<|titel|<|mailadres|<|een
    afbeelding|<|1058301758|<|0|<|

    De kern van mijn script ziet er zo uit:

    <?php

    include("../includes/db.php");

    $dir = "files";
    $bestanden = scandir($dir);

    for($i=2; $i<count($bestanden); $i++)
    {
    $bestand = $dir . "/" . $bestanden[$i];
    $openbestand = fopen($bestand, "r");
    $gegevens = fread($openbestand, filesize($bestand));
    $stukken = explode("|<|",$gegevens);

    $korte_tekst = $stukken[0];
    $titel = $stukken[3];
    $datum = date("Y-m-d H:i:s", $stukken[6]);

    print($korte_tekst . "<br /><br />");

    mysql_query("
    insert into nieuws(
    titel, auteur, datum, datum_actief, actief, categorie,
    subcategorie, korte_tekst)
    values('" .
    $titel . "',2,'" . $datum . "','" . $datum . "',1,1,1,'" . $korte_tekst
    .. "')") or
    die("Query mislukt voor bestand " . $bestand . "<br />" .
    mysql_error() . "<br /><br />");

    fclose($openbestand);
    }

    ?>

    Wanneer ik die <?php die('Access denied'); ?> uit de bestanden
    verwijder is er geen probleem.
    Als ik in mijn mysql_query $korte_tekst vervang door gewoon een string
    (dus geen gegevens uit het bestandje) is er ook geen probleem...

    Iemand enig idee waarom php (of ik beter gezegd) hier in de mist gaat?

    --
    Groeten,
    StriKe

    http://www.internetfreakz.be



  2. #2
    Rik
    Eigenaardig probleem in SQL query
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Eigenaardig probleem in SQL query

    On Thu, 25 Jan 2007 18:47:56 +0100, StriKe
    <strike_usenet@internetfreakz.be.invalid> wrote:

    > Ik heb een groot aantal bestanden waarvan de inhoud nu in een database
    > terecht moet komen; op zich geen probleem maar toch zit ik bij het
    > uitvoeren van de insert opdracht in PHP met volgende foutmelding:
    >
    > You have an error in your SQL syntax; check the manual that corresponds
    > to your MySQL server version for the right syntax to use near 'Access
    > denied'); ?> Op de hoek van de Edingsesteenweg en de Dr. De Rolaan in
    > Mo' at line 3
    >
    > De bestanden zijn allemaal als volgt opgebouwd:
    >
    > <?php die('Access denied'); ?>
    > een korte tekst|<||<|webmaster|<|titel|<|mailadres|<|een
    > afbeelding|<|1058301758|<|0|<|
    >
    > De kern van mijn script ziet er zo uit:


    > $bestand = $dir . "/" . $bestanden[$i];
    > $openbestand = fopen($bestand, "r");
    > $gegevens = fread($openbestand, filesize($bestand));
    > $stukken = explode("|<|",$gegevens);


    > $korte_tekst = $stukken[0];



    > Wanneer ik die <?php die('Access denied'); ?> uit de bestanden verwijder
    > is er geen probleem.
    > Als ik in mijn mysql_query $korte_tekst vervang door gewoon een string
    > (dus geen gegevens uit het bestandje) is er ook geen probleem...
    >
    > Iemand enig idee waarom php (of ik beter gezegd) hier in de mist gaat?


    Het bovenste gedeelt, vanaf <?php tot de eerste |<| wordt gewoon
    meegenomen. Omdat daar een quote in zit wordt de string in je query te
    vroeg afgebroken, en weet MySQL niet welk functies je nu bedoeld met de
    rest 'Acces denied') etc..'.

    Maak gebruik van fgets() om het bestand per regel binnen te halen, waarbij
    je ervoor zorgt de eerste regel over te slaan.

    Ook valt het aan te raden even het volgende te doen:

    array_walk($stukken,'mysql_real_escape_string');

    Dan worden alle quotes/rare karakters "ge-escaped" (pfff engels naar
    nederlands krijgen... wat zou een goede term hiervoor zijn?), zodat ze
    altijd als volledige string naar de database gaan.
    --
    Rik Wasmus
    * I'm testing several new newsreaders at the moment. Please excuse
    possible errors and weird content. *

  3. #3
    StriKe
    Eigenaardig probleem in SQL query
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Eigenaardig probleem in SQL query

    > Het bovenste gedeelt, vanaf <?php tot de eerste |<| wordt gewoon meegenomen.
    > Omdat daar een quote in zit wordt de string in je query te vroeg afgebroken,
    > en weet MySQL niet welk functies je nu bedoeld met de rest 'Acces denied')
    > etc..'.


    Hoe verklaar je dan het feit dat wanneer ik $korte_tekst op het scherm
    afbeeld die <?php etc NIET wordt afgedrukt op het scherm, maar als ik
    diezelfde variabele dan gebruik in een SQL query, die <?php etc wél
    meergerekend wordt? Zie PHP daar dan twee verschillende waarden voor
    die ene variabele?

    > Maak gebruik van fgets() om het bestand per regel binnen te halen, waarbij je
    > ervoor zorgt de eerste regel over te slaan.


    Probleem (misschien zie jij daar een 'vlugge makkelijke oplossing'
    voor) is dat mijn bestanden separated zijn door |<| en niet in te delen
    zijn in regels... De ene keer valt het bestand uitéén op twee regels,
    de andere keer vijf...

    > Ook valt het aan te raden even het volgende te doen:
    >
    > array_walk($stukken,'mysql_real_escape_string');
    >
    > Dan worden alle quotes/rare karakters "ge-escaped" (pfff engels naar
    > nederlands krijgen... wat zou een goede term hiervoor zijn?), zodat ze
    > altijd als volledige string naar de database gaan.


    Door dat toe te passen krijg ik nu wel mijn gegevens in de database, al
    zit daar dan wel telkens die <?php etc in, nu die er nog uit en ik ben
    iemand die vanacht rustig kan gaan slapen

    Hoe dan ook: alvast dank voor je reactie!

    --
    Groeten,
    StriKe

    http://www.internetfreakz.be



  4. #4
    Rik
    Eigenaardig probleem in SQL query
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Eigenaardig probleem in SQL query

    On Thu, 25 Jan 2007 20:09:19 +0100, StriKe
    <strike_usenet@internetfreakz.be.invalid> wrote:

    >> Het bovenste gedeelt, vanaf <?php tot de eerste |<| wordt gewoon
    >> meegenomen. Omdat daar een quote in zit wordt de string in je query te
    >> vroeg afgebroken, en weet MySQL niet welk functies je nu bedoeld met de
    >> rest 'Acces denied') etc..'.

    >
    > Hoe verklaar je dan het feit dat wanneer ik $korte_tekst op het scherm
    > afbeeld die <?php etc NIET wordt afgedrukt op het scherm, maar als ik
    > diezelfde variabele dan gebruik in een SQL query, die <?php etc wél
    > meergerekend wordt? Zie PHP daar dan twee verschillende waarden voor die
    > ene variabele?


    Nee, je bekijkt het waarschijnlijk als HTML. In HTML wordt alles tussen <>
    verborgen, aangezien dit tags zijn. Bekijk eens de source van je pagina in
    plaats van je pagina zelf, of bekijk htmlspecialchars($kortetekst);.

    >> Maak gebruik van fgets() om het bestand per regel binnen te halen,
    >> waarbij je ervoor zorgt de eerste regel over te slaan.

    >
    > Probleem (misschien zie jij daar een 'vlugge makkelijke oplossing' voor)
    > is dat mijn bestanden separated zijn door |<| en niet in te delen zijn
    > in regels... De ene keer valt het bestand uitéén op twee regels, de
    > andere keer vijf...


    Dat maakt an sich niet uit, als de eerste regel altijd weggegooid moet
    worden. Door eerst een fgets() uit te voeren wordt de pointer in de file
    verplaatst naar de volgende regel, dus met 1 fgets() en dan een fread()
    tot het einde zal gewoon het hele bestand minus de eerste regel gelezen
    worden.
    Ofwel:

    $bestand = $dir . "/" . $bestanden[$i];
    $openbestand = fopen($bestand, "r");
    fgets($openbestand); //donder de eerste regel weg
    $gegevens = fread($openbestand, filesize($bestand)); //lees de rest
    --
    Rik Wasmus
    * I'm testing several new newsreaders at the moment. Please excuse
    possible errors and weird content. *

  5. #5
    StriKe
    Eigenaardig probleem in SQL query
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Eigenaardig probleem in SQL query

    > Nee, je bekijkt het waarschijnlijk als HTML. In HTML wordt alles tussen <>
    > verborgen, aangezien dit tags zijn. Bekijk eens de source van je pagina in
    > plaats van je pagina zelf, of bekijk htmlspecialchars($kortetekst);.


    Hmm, hoe een mens zich daar blind kan op staren
    Alvast bedankt voor de verheldering

    > Dat maakt an sich niet uit, als de eerste regel altijd weggegooid moet
    > worden. Door eerst een fgets() uit te voeren wordt de pointer in de file
    > verplaatst naar de volgende regel, dus met 1 fgets() en dan een fread() tot
    > het einde zal gewoon het hele bestand minus de eerste regel gelezen worden.
    > Ofwel:
    >
    > $bestand = $dir . "/" . $bestanden[$i];
    > $openbestand = fopen($bestand, "r");
    > fgets($openbestand); //donder de eerste regel weg
    > $gegevens = fread($openbestand, filesize($bestand)); //lees de rest


    Hmm, redelijk dom van me om dat niet te zien dat je met één
    bestandspointer 'blijft stilstaan' natuurlijk, en niet opnieuw van
    vooraf aan in het bestand begint te lezen na een fgets()
    Ook hier bedankt, de oplossing werkt perfect! :-)

    --
    Groeten,
    StriKe

    http://www.internetfreakz.be



  6. #6
    Erik Hensema
    Eigenaardig probleem in SQL query
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Eigenaardig probleem in SQL query

    On Thu, 25 Jan 2007 17:47:56 GMT, StriKe (strike_usenet@internetfreakz.be.invalid) wrote:
    > Ik heb een groot aantal bestanden waarvan de inhoud nu in een database
    > terecht moet komen; op zich geen probleem maar toch zit ik bij het
    > uitvoeren van de insert opdracht in PHP met volgende foutmelding:
    >
    > You have an error in your SQL syntax; check the manual that corresponds
    > to your MySQL server version for the right syntax to use near 'Access
    > denied'); ?> Op de hoek van de Edingsesteenweg en de Dr. De Rolaan in
    > Mo' at line 3
    >
    > De bestanden zijn allemaal als volgt opgebouwd:
    >
    ><?php die('Access denied'); ?>
    > een korte tekst|<||<|webmaster|<|titel|<|mailadres|<|een
    > afbeelding|<|1058301758|<|0|<|
    >
    > De kern van mijn script ziet er zo uit:


    [...]

    > Iemand enig idee waarom php (of ik beter gezegd) hier in de mist gaat?


    Je vergeet om de bestanden door mysql_escape_string() te halen.
    Altijd alle strings door mysql_escape_string() halen voordat je
    ze in de database probeert te duwen!!

    --
    Erik Hensema (erik@hensema.net)
    Quoting-HOWTO: http://www.leerquoten.nl

  7. #7
    Rik
    Eigenaardig probleem in SQL query
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Eigenaardig probleem in SQL query

    Erik Hensema <usenet@smac.hensema.net> wrote:
    > Je vergeet om de bestanden door mysql_escape_string() te halen.
    > Altijd alle strings door mysql_escape_string() halen voordat je
    > ze in de database probeert te duwen!!


    mysql_real_escape_string() is beter.

    Prepared statements zijn het beste op het moment:
    http://nl3.php.net/manual/en/functio...mt-prepare.php

    --
    Rik Wasmus

  8. #8
    Erik Hensema
    Eigenaardig probleem in SQL query
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Eigenaardig probleem in SQL query

    On Sat, 27 Jan 2007 14:34:50 +0100, Rik (luiheidsgoeroe@hotmail.com) wrote:
    > Erik Hensema <usenet@smac.hensema.net> wrote:
    >> Je vergeet om de bestanden door mysql_escape_string() te halen.
    >> Altijd alle strings door mysql_escape_string() halen voordat je
    >> ze in de database probeert te duwen!!

    >
    > mysql_real_escape_string() is beter.
    >
    > Prepared statements zijn het beste op het moment:
    > http://nl3.php.net/manual/en/functio...mt-prepare.php


    Zo zo, mysql begint bijna een volwassen database te worden! :-O

    --
    Erik Hensema (erik@hensema.net)
    Quoting-HOWTO: http://www.leerquoten.nl

  9. #9
    Rik
    Eigenaardig probleem in SQL query
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Eigenaardig probleem in SQL query

    Erik Hensema <usenet@smac.hensema.net> wrote:

    > On Sat, 27 Jan 2007 14:34:50 +0100, Rik (luiheidsgoeroe@hotmail.com)
    > wrote:
    >> Erik Hensema <usenet@smac.hensema.net> wrote:
    >>> Je vergeet om de bestanden door mysql_escape_string() te halen.
    >>> Altijd alle strings door mysql_escape_string() halen voordat je
    >>> ze in de database probeert te duwen!!

    >>
    >> mysql_real_escape_string() is beter.
    >>
    >> Prepared statements zijn het beste op het moment:
    >> http://nl3.php.net/manual/en/functio...mt-prepare.php

    >
    > Zo zo, mysql begint bijna een volwassen database te worden! :-O


    Zowaar, ik ken nog de tijd dat UNION queries en subqueries gewoon niet
    mogelijk waren. (Alhoewel, als ik van de gemiddelde leeftijd van de
    bezoekers van deze groep moet uitgaan zou iedereen dat bijna wel kennen
    die met MySQL heeft gewerkt, en ben ik een van de uitzonderingen die dat
    "ver in het verleden" vind).

    Helaas nog voldoende hosts die geen ondersteuning voor mysqli in PHP
    bakken...
    --
    Rik Wasmus

  10. #10
    Hans
    Eigenaardig probleem in SQL query
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Eigenaardig probleem in SQL query

    On Sat, 27 Jan 2007 18:44:26 +0000 (UTC),
    Erik Hensema <usenet@smac.hensema.net> wrote:
    > On Sat, 27 Jan 2007 14:34:50 +0100, Rik (luiheidsgoeroe@hotmail.com) wrote:


    >> Prepared statements zijn het beste op het moment:
    >> http://nl3.php.net/manual/en/functio...mt-prepare.php

    >
    > Zo zo, mysql begint bijna een volwassen database te worden! :-O


    Jij hebt zeker nog nooit de foutmeldingen van mysqli voor je kiezen
    gehad :-)

    Hans
    --
    IM: hans.wolters@jabber.xs4all.nl
    http://lonki.xs4all.nl


Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics