probleem met query met where...

Status
Niet open voor verdere reacties.

OldGeorge

Nieuwe gebruiker
Lid geworden
20 jun 2013
Berichten
2
Na heel veel zoeken toch maar deze vraag stellen.
Het antwoord op soortgelijke vragen in verschillende fora heeft mij geen oplossing gebracht.
Het stukje onderstaande code werkt prima:
alle gegevens uit de database worden keurig op het scherm geprint.
PHP:
<?php
$sql = "SELECT id_nr, toets, naam, huisnummer, postcode, plaats, mailadres 
FROM nlijst 
WHERE toets = 'abcdefg' ";
// toets komt uit $_POST['toets'] door een formulier
mysql_select_db('dezedb');
$resultaat = mysql_query( $sql, $conn );
if(!$resultaat )
{
  die('kon geen data ophalen: ' . mysql_error());
}
else
{
while($rij = mysql_fetch_array($resultaat , MYSQL_ASSOC))
echo  "id_nr     :{$rij['id_nr']}<br>".
       "toets     :{$rij['toets']}<br>".
       "naam      :{$rij['naam']}<br> ".
       "huisnummer:{$rij['huisnummer']}<br>".
       "postcode  :{$rij['postcode']}<br>".
       "plaats    :{$rij['plaats']}<br>".
       "mailadres :{$rij['mailadres']}<br>".
       "--------------------------------<br>";
} 
?>
Als ik echter i.p.v. 'abcdefg' nu $_POST['toets'] ervoor in de plaats zet
zoals het antwoord op de soortgelijke vragen luidt, dan is het resultaat
dat er helemaal niets op het scherm verschijnt zelfs geen error bericht.
Het plaatsen tussen quotes helpt niet.

Wie weet hoe het wel moet?
Ik gebruik PHP 5.3.13
Mysql 5.5.24
 
Laatst bewerkt door een moderator:
Welkom op Helpmij :)

Verander je eerste paar regels eens in dit:
PHP:
$sql = "SELECT id_nr, toets, naam, huisnummer, postcode, plaats, mailadres 
FROM nlijst";
// Controleer of een formulier is verzonden
if('POST' === $_SERVER['REQUEST_METHOD']) {
    // Controleer of $_POST['toets'] bestaat
    if(isset($_POST['toets'])) {
        // Breidt de query uit met een WHERE
        $sql .= ' WHERE toets = "'. mysql_real_escape_string($_POST['toets']) .'"';
    }
}
mysql_select_db('dezedb');
// etc

Nu krijg je standaard de volledige lijst, maar bij een zoekactie op toets alleen die specifieke toets.
 
Laatst bewerkt:
Als je geen resultaten ziet levert je query niets op en dan ligt het voor de hand om na te kijken wat de query precies is, toch :-)

Anyhoes, de code hierboven zou ik een klein pietsie anders doen; de waarde van 'toets' hoeft niet altijd via een POST te komen (denk bookmarks)
PHP:
$sql = "SELECT id_nr, toets, naam, huisnummer, postcode, plaats, mailadres 
FROM nlijst";
// Controleer of er een waarde voor 'toets' is opgegeven via GET of POST
if(isset($_REQUEST['toets'])) {
    // Breidt de query uit met een WHERE
    $sql .= ' WHERE toets = "'. mysql_real_escape_string($_REQUEST['toets']) .'"';
}

mysql_select_db('dezedb');
// etc
 
probleem met query met where

Sorry voor deze trage reactie. Hoge koorts veroordeelde mij plotseling tot et bed.

Bedankt allebei. Het werkt ook allebel.
'toets' is afkomstig uit een formulier met POST-method.
Wel merkwaardig overigens dat het met de echte string niet lukt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan