login  Naam:   Wachtwoord: 
Registreer je!
 Forum

eigenaardig sql probleem

Offline StriKe - 25/01/2007 18:49 (laatste wijziging 25/01/2007 18:51)
Avatar van StriKeHTML interesse 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:

  1. <?php
  2.  
  3. include("../includes/db.php");
  4.  
  5. $dir = "files";
  6. $bestanden = scandir($dir);
  7.  
  8. for($i=2; $i<count($bestanden); $i++)
  9. {
  10. $bestand = $dir . "/" . $bestanden[$i];
  11. $openbestand = fopen($bestand, "r");
  12. $gegevens = fread($openbestand, filesize($bestand));
  13. $stukken = explode("|<|",$gegevens);
  14.  
  15. $korte_tekst = $stukken[0];
  16. $titel = $stukken[3];
  17. $datum = date("Y-m-d H:i:s", $stukken[6]);
  18.  
  19. print($korte_tekst . "<br /><br />");
  20.  
  21. insert into nieuws(
  22. titel, auteur, datum, datum_actief, actief, categorie, subcategorie, korte_tekst)
  23. values('" .
  24. $titel . "',2,'" . $datum . "','" . $datum . "',1,1,1,'" . $korte_tekst . "')") or
  25. die("Query mislukt voor bestand " . $bestand . "<br />" . mysql_error() . "<br /><br />");
  26.  
  27. fclose($openbestand);
  28. }
  29.  
  30. ?>

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?

7 antwoorden

Gesponsorde links
Offline Mad_Mike - 25/01/2007 18:56 (laatste wijziging 25/01/2007 18:57)
Avatar van Mad_Mike PHP beginner doe eens een var_dump($stukken);
Als het goed is wordt ook de eerste regel tekst '<?php die('Access denied'); ?>' + de korte beschrijving opgeslagen in de eerste index van de array $stukken.

en doordat er ' in voorkomen gaat ie op z'n bek. Je kan het verhelpen door $korte_tekst = addslashes($stukken[0]); te gebruiken. Maar waarschijnlijk wil je die eerste regel tekst niet mee hebben.

edit:
trouwens slimmer om overal die addslashes(); methode te gebruiken bij het ophalen van de variabelen
Offline Button - 25/01/2007 18:58
Avatar van Button PHP ver gevorderde hij breekt die string af bij <?php die('
doe is addslashes ofzoiets..
Offline StriKe - 25/01/2007 20:05
Avatar van StriKe HTML interesse Hallo,

Ik kan best begrijpen dat met die " in die eerste regel PHP de kluts kwijt is, maar het eigenaardig is dat wanneer ik $korte_tekst afprint die eerste regel (met die access denied) NIET wordt meegenomen blijkbaar...

Ook bij een var_dump() is er geen sprake van die <?php die('Access denied'); ?>
...

Hoe dan ook, het klinkt nogal altijd bijzonder raar voor me ;) en m'n probleem is ook nog niet opgelost 

Ik heb nu volgende regels toegevoegd:

  1. $korte_tekst = addslashes($stukken[0]);
  2. $korte_tekst = eregi_replace("<?php die('Access denied'); ?>", "",$korte_tekst);


Nu gaan de gegevens al wel in de database, maar dan staat er nog steeds die <?php die('Access denied'); ?> in het veld korte_tekst (in mijn database, en dus opneiuw niet als ik het afdruk op het scherm...)

Die laatste eregi_replace is eigenlijk een 'wanhoopsdaad', maar tevergeefs dus ;)
Offline Mad_Mike - 25/01/2007 20:15 (laatste wijziging 25/01/2007 20:16)
Avatar van Mad_Mike PHP beginner Dan zou je die eregi_replace() als eerste moeten doen.. en daarna de addslashes. Want die addslashes voegt een / toe waar een ' staat :-)
Offline StriKe - 25/01/2007 21:02
Avatar van StriKe HTML interesse Dank nog voor je tip, maar 'k had intussen mijn probleem reeds opgelost met een fgets() op de eerste regel, en daarna gewoon uit te lezen zoals ik reeds deed.

Dom van me dat ik dat niet eerder had ingezien ook 
Offline Thomas - 26/01/2007 09:06
Avatar van Thomas Moderator Het lijkt me beter dat je de folder beveiligt, i.p.v. de bestanden?
Offline StriKe - 26/01/2007 10:53
Avatar van StriKe HTML interesse 't Gaat om bestanden van een oude website (die ik niet heb gemaakt) die nu geïmporteerd moeten worden in een nieuwe site...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.2s