[MYSQL / PHP] Probleem met database updaten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • A.Kebab
  • Registratie: Mei 2005
  • Niet online
Ik heb een probleempje met de volgende code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
error_reporting(E_ALL);
$con = mysql_connect("localhost","xx","xx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("xx", $con);

$string = file_get_contents('etext_nl2.txt');

// begin loop

$token = strtok($string, "-");
while ($token != false)
  {
    
    $myFile = "ebooks/".$token.".txt";
    $fh = fopen($myFile, 'r');
    $theData = fread($fh, filesize($myFile));
    fclose($fh);
    
    mysql_query("UPDATE books_nl SET contents = '$theData'
    WHERE etext = '$token'");

    echo $token."<br>";
    $token = strtok("-");
  }


mysql_close($con);
?>


De database wil de rijen niet updaten. De query vult content netjes in wanneer ik '$theData' vervang met 'blabla' en als ik $theData echo krijg ik ook netjes de gewilde output.

Het probleem is misschien dat ik ebooks van max 1.5 mb in de database wil zetten. Kan het hem zitten in de grootte van die bestanden? Ik gebruik een longtext veld.

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je probleem zit 'm geheid in het feit dat er quotes in de tekst voorkomen; je zult daarom moeten escapen. Maar beter gebruik je parameterized queries; dan heb je er geen omkijken naar.

(En idd, zie hieronder, je query zal wel te groot worden).

[ Voor 36% gewijzigd door RobIII op 14-09-2009 21:34 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 09:28

TheBorg

Resistance is futile.

Er gaan een aantal dingen fout:
1. Het kan zijn dat de mysql instellingen geen queries van meer dan 1MB toestaan.
2. $theData is niet geescaped. mysql_real_escape_string($theData)
3. Die hele fopen/fread kun je beter vervangen voor file_get_contents();

[ Voor 8% gewijzigd door TheBorg op 14-09-2009 21:33 ]


Acties:
  • 0 Henk 'm!

  • A.Kebab
  • Registratie: Mei 2005
  • Niet online
TheBorg schreef op maandag 14 september 2009 @ 21:32:
Er gaan een aantal dingen fout:
1. Het kan zijn dat de mysql instellingen geen queries van meer dan 1MB toestaan.
2. $theData is niet geescaped. mysql_real_escape_string($theData)
3. Die hele fopen/fread kun je beter vervangen voor file_get_contents();
Ja het was het escapen! Super bedankt _/-\o_

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Daar had je makkelijk zelf achter kunnen komen als je de error van MySQL had bekeken.

PHP:
1
mysql_query('UPDATE...') or die(mysql_error());

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

RobIII schreef op maandag 14 september 2009 @ 21:32:
Je probleem zit 'm geheid in het feit dat er quotes in de tekst voorkomen; je zult daarom moeten escapen. Maar beter gebruik je parameterized queries; dan heb je er geen omkijken naar.
Alleen jammer dat PHP daar geen fatsoenlijke ondersteuning voor heeft. Voor MySql inmiddels wel, middels mysqli_stmt_prepare, maar iets gelijksoortigs voor MS Sql bestaat niet.

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Confusion schreef op dinsdag 15 september 2009 @ 09:15:
Alleen jammer dat PHP daar geen fatsoenlijke ondersteuning voor heeft. Voor MySql inmiddels wel, middels mysqli_stmt_prepare, maar iets gelijksoortigs voor MS Sql bestaat niet.
Ik volg 't effe niet :? Wie heeft het over MSSQL? En je bent, aan je link te zien, bekend met MySQLi...dus je weet dat er wel ondersteuning is voor parameterized queries...

[ Voor 42% gewijzigd door RobIII op 15-09-2009 09:32 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Er bestaat ook gewoon pdo_mssql in PHP Confusion ;)

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

RobIII schreef op dinsdag 15 september 2009 @ 09:29:
[...]
Ik volg 't effe niet :? Wie heeft het over MSSQL?
Ik, aangezien ik gisteren een PHP applicatie ging uitbreiden, daarbij SQL iInjection mogelijkheden zag, dat wilde fixen door de queries naar geparametriseerde varianten om te zetten en me vervolgens zonder succes wezenloos heb gezocht naar een manier om dat op een fatsoenlijke manier te doen met MS Sql. Een subtiele aanpassing van je Google link helpt daarbij niet.
Cartman! schreef op dinsdag 15 september 2009 @ 09:30:
Er bestaat ook gewoon pdo_mssql in PHP Confusion ;)
Dank je, maar zo 'gewoon' is die niet, want die heb ik gisteren niet gevonden. Ik heb ook niet onder PDO gezocht, aangezien ik niet dacht dat ik daar database-specifieke querymogelijkheden zou vinden. Dat is een totaal onlogische plaats om ze te verbergen.

Wie trösten wir uns, die Mörder aller Mörder?

Pagina: 1