login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Arrayvars veranderen in 1 regel

Offline Ienzo - 30/05/2009 00:00
Avatar van IenzoNieuw lid Uhu, zo vaag als de titel is is het probleem ook. Ik heb een script gemaakt met curl die alles via binnenhaalt van een site en daarna een regex die twee gegevens opslaat in een array, en dat zo'n 40 keer. Op deze manier ontstaan er dus dubbele array's ($array[0][x] en $array[1][x]). Door middel van een for loop wil ik dan alle gegevens invoeren in een MySQL tabel, hier gaat het echter fout. Ik heb voor de zekerheid in mijn script al ingebouwd dat hij de vars echoed zodat ik sneller zie wat het probleem is. Op de pagina werkt de echo perfect; alle gegevens worden netjes geechoed zoals het zou moeten. Als ik echter 1 regel eronder het wil invoeren in de database gaat het fout. Een getal uit de zin uit de bron van de site wordt prima ingevoerd (1e kolom). Een woord uit dezelfde zin uit de bron wordt echter niet goed ingevoerd (2e kolom). In plaats van het woord, wat dus wel prima wordt geechoed, wordt de hele zin uit de bron ingevoerd (deze wordt echter afgekapt aangezien ik het maximum heb ingesteld op 12).
Ik, en een paar anderen met mij, hebben echt totaal geen idee waarom de inhoud van de var van de ene op de andere zin verandert, iemand die de fout kan vinden?

Het is een aardig scriptje, maar dit is het deel waar het om gaat:
  1. preg_match_all($regex, $data, $regs);
  2.  
  3. $a = count($regs[0]);
  4. for ($x = 0;$x < $a;$x++) {
  5. echo $regs[0][$x];
  6. echo $regs[1][$x];
  7. mysql_query("INSERT INTO `Tabel` VALUES (".$regs[1][$x].",'".$regs[0][$x]."','true')");
  8. }

4 antwoorden

Gesponsorde links
Offline Koen - 30/05/2009 00:14
Avatar van Koen PHP expert Probeer eens $regs[1][$x] te typecasten naar een integer, want dat is wat er moet ingegeven worden in de database (dat maak ik op uit het niet gebruiken van quotes), dit doe je zo:
  1. (int) $regs[1][$x];
.

  1. mysql_query("INSERT INTO `Tabel` VALUES (".(int) $regs[1][$x].",'".$regs[0][$x]."','true')");

Wordt je code dan.
Offline Ienzo - 30/05/2009 00:34
Avatar van Ienzo Nieuw lid
Koen schreef:
Probeer eens $regs[1][$x] te typecasten naar een integer, want dat is wat er moet ingegeven worden in de database (dat maak ik op uit het niet gebruiken van quotes)


Bedankt voor het snelle antwoord, het is jammer genoeg niet de oplossing. Er verandert niets.
Offline Ibrahim - 30/05/2009 09:30
Avatar van Ibrahim PHP expert Echo eens de query en de foutmelding die PHP.net: mysql_error teruggeeft. Beide debug data moet je even hier posten.
Offline Ienzo - 30/05/2009 11:44
Avatar van Ienzo Nieuw lid Ik ben ondertussen verder gegaan met het script en wat dingetjes verandert, vandaar dat de tabelnaam nu anders is. Niet erg belangrijk, aangezien de bug er nog steeds is, maar ik dacht ik meld het even.
Dit is wat hij echoed:
  1. INSERT INTO `Families` VALUES (114,'Puttana','true')

Hij geeft verder geen enkele error, hij gaat gewoon door met het script.
Zo is de query nu:
  1. mysql_query("INSERT INTO `Families` VALUES (".(int) $regs[1][$x].",'".$regs[0][$x]."','true')") or die(mysql_error());
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.23s