[PHP/MySQL] Query niet correct uitgevoerd

Pagina: 1
Acties:
  • 46 views sinds 30-01-2008

  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
Ik maak gebruik van de onderstaande code. Voor de zekerheid laat ik (te zien op regel 11) de query ook echo'en. Wanneer ik deze query handmatig laat uitvoeren houdt hij netjes ook rekening met de datum. Wanneer hij echter zelf de query uitvoert komt opeens alles mee. Ziet iemand waar de fout in zit?

Zelf ben ik nu al een half uurtje het script aan het nalopen maar kan niet zien waar de echo vd query anders is dan de uitgevoerde query en waar de fout dus zit.

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 $woningstichting = $_GET['woningstichting'];
$bestand = $_GET['bestand'];
$tabel1 = $woningstichting."_relatie_gegevens";
$tabel2 = $woningstichting."_relatie_eigenschappen";
mysql_select_db(db_name); 
$date = date("Y-m-d");

$select = "SELECT * FROM $tabel1, $tabel2 WHERE $tabel1.relatienr = $tabel2.relatienr AND klant= '1' AND ingangsdatum > '$date'";                 
$export = mysql_query($select); 
$fields = mysql_num_fields($export); 
echo $select;
for ($i = 0; $i < $fields; $i++) { 
    $header .= mysql_field_name($export, $i) . "\t"; 
} 

while($row = mysql_fetch_row($export)) { 
    $line = ''; 
    foreach($row as $value) {                                             
        if ((!isset($value)) OR ($value == "")) { 
            $value = "\t"; 
        } else { 
            $value = str_replace('"', '""', $value); 
            $value = '"' . $value . '"' . "\t"; 
        } 
        $line .= $value; 
    } 
    $data .= trim($line)."\n"; 
} 
$data = str_replace("\r","",$data); 

if ($data == "") { 
    $data = "\n(0) Records Found!\n";                         
} 

$header.="Content-type: application/x-msdownload"; 
$header.="Content-Disposition: attachment; filename=$tabel.xls"; 
$header.="Pragma: no-cache"; 
$header.="Expires: 0"; 
$filename = $woningstichting."_klanten.xls";

$somecontent = "$header\n$data";
// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {

    // In our example we're opening $filename in append mode.
    // The file pointer is at the bottom of the file hence 
    // that's where $somecontent will go when we fwrite() it.
    if (!$handle = fopen($filename, 'w')) {
         echo "Cannot open file ($filename)";
         exit;
    }

    // Write $somecontent to our opened file.
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }
    
   // echo "Success, wrote ($somecontent) to file ($filename)";
    include('../mailer/test.php');
    fclose($handle);
                    
} else {
    echo "The file $filename is not writable";
}

[ Voor 0% gewijzigd door Rainmaker1987 op 22-08-2006 15:19 . Reden: typfout ]


  • Jerry
  • Registratie: September 2001
  • Laatst online: 09-04-2022

Jerry

Who?

Misschien omdat die variabelen niet lekker in die string staan:
PHP:
1
$select = "SELECT * FROM ".$tabel1.", ".$tabel2." WHERE ".$tabel1.".relatienr = ".$tabel2.".relatienr AND klant= '1' AND ingangsdatum > '".$date."'";


Als je het zo is probeert, doet ie het dan wel?

Specs
Youtube celebrity
D3 Crusader


  • Thekk
  • Registratie: Augustus 2002
  • Laatst online: 09-02 13:01
En een puntkomma ( ; ) achter je querystring wil ook nog weleens helpen.

[ Voor 5% gewijzigd door Thekk op 22-08-2006 15:51 ]

Ik heb geen zin om een sig te maken.


Verwijderd

op regel 10 toevoegen
PHP:
1
2
3
4
if(mysql_err_no()>0)
{ 
  die("Er is een fout opgetreden te weten: (".mysql_error().")");
}

Dan zegt ie het zelf

edit:
Ik dacht dat ie een error gaf.
Maar dit vind ik standaard dat erbij hoort

[ Voor 21% gewijzigd door Verwijderd op 22-08-2006 15:58 . Reden: zie post ]


  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
Die foutmelding hoor ik er inderdaad wel eigenlijk netjes in te zetten. Bij deze wordt hij netjes overgenomen.

De andere twee opties geprobeerd. Met de ; zou ik me doodgeschaamd hebben, maar helaas het bleek niets uit te maken. Ook het netter in de code zetten maakt niets uit. Nog steeds pakt hij hem niet goed. (een combinatie biedt ook niet de oplossing)

Het meest vreemde is dat ik dit hele gebeuren uit een ander bestand heb overgenomen waar ik heb aangegeven:

code:
1
ingangsdatum < '".$date."';


En hier werkt hij vreemd genoeg wel :?

  • Leejow(saait)
  • Registratie: Februari 2002
  • Laatst online: 04-02 22:22

Leejow(saait)

Blater

En op regel 5:
PHP:
1
mysql_select_db(db_name);

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Hoe staat de character-set van je editor ingesteld?

include('../mailer/test.php');
^ hierin verstuur je de mail neem ik aan, je kijkt wel naar het goede bestand? (waarom sluit je het bestand btw niet voor je dan gaat mailen?)

  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
Leejow(saait) schreef op dinsdag 22 augustus 2006 @ 16:34:
En op regel 5:
PHP:
1
mysql_select_db(db_name);
wat je hiermee bedoelt snap ik niet helemaal, hij is netjes afgesloten en al een aantal regels eerder gedefinieerd. Maar die gegevens kan ik natuurlijk niet vrijgeven.

@Shadowman ik heb dat niet kunnen vinden. Ik gebruik Crimson Editor 3.70 Release (Freeware). En nog nooit ergens problemen mee gevonden.

overigens bedankt voor de rechtwijzing. Leer ik weer wat netter schrijven, ik merk af en toe wel eens dat het soms wat slordig is.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:21

Creepy

Tactical Espionage Splatterer

Simpel:
mysql_select_db(db_name);
Het kan zijn dat je een database met de naam db_name hebt. In dat geval wordt het:
code:
1
mysql_select_db('db_name');

Het kan ook zijn dat db_name een variabele is (die overigens niet in je PHP script voor lijkt te komen). In dat geval wordt het:
code:
1
mysql_select_db($db_name);

Toch twee kleine subtiele verschillen :)

Daarnaast gaan we er vanuit dat je zelf aan het debuggen gaat. Ik zie je nergens fouten van MySQL afvangen en de mysql_foutmelding afdrukken. Dit kan je enorm schelen. Je vraag komt nu over op "dit is m'n script, dit gaat er fout. Help me". Iets wat niet helemaal de bedoeling is. We verwachten dat je in eerste instantie zelf actief opzoek gaat naar de fout waarbij een half uurtje zoeken qua tijd eigenlijk helemaal niet veel is. Zie ook Programming Beleid - De Quickstart

Aangezien ik verwacht dat je zelf de oplossing gaat vinden zodra je de MySQL foutmelding in PHP gaat afvangen en afdrukken sluit ik nu je topic. Mocht je nadat je dat hebt gedaan er nog steeds niet uitkomen dan kan je hier een nieuwe topic openen. Let hierbij wel op de net genoemde quickstart zodat je weet wat we van je verwachten voordat je hier een topic opent. :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.