Meerdere sql queries in php

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
helmuteke
Premium Member
Premium Member
Berichten: 569
Lid geworden op: 08 feb 2010, 15:36
Uitgedeelde bedankjes: 3 keer
Bedankt: 27 keer

ik ben weer wat aan foefelen maar zit met volgende probleem

ik maak een connectie (ok via mysql nog niet de PDO of mysqli) met een mysql db en doe dan een stored procedure met parameter.

De eerste query loopt perfect maar als ik dan een tweede erachter gooi dan krijg ik een foutmelding.
Comment ik de eerste en voer ik de 2de uit dan ga dit wel.

Code: Selecteer alles

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);
//$data = $_POST["data"];

$data = "5142186";

$con = mysql_connect("localhost", "root", "xxxxxxx.");

if (!$con) {
    die("Error: " . mysql_error());
}

mysql_select_db("24uur20175", $con);
$result = mysql_query("call link2(".$data.")");
while ($row = mysql_fetch_array($result)) {
                        
                        $naam = $row[1];
                        $ploegnr = $row[0];
                       
                    }




$strquery = "call laatstedoorkoming(".$ploegnr.")";
$result2 = mysql_query($strquery);

 while ($row2 = mysql_fetch_array($result2)) {
                        
                        $tijdstamplaatste = $row2[2];
                        
                    }


echo "|".$ploegnr." | ".$naam." | ".$tijdstamplaatste." | ".$strquery." |";

?>

Als fout krijg ik volgende

Code: Selecteer alles

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/html/system/check.php on line 34
en de echo output is

Code: Selecteer alles

2 | The Crazy Bernarts | | call laatstedoorkoming(2) |
Iemand die me op weg kan brengen
Gebruikersavatar
guntherstassen
Pro Member
Pro Member
Berichten: 315
Lid geworden op: 09 feb 2011, 20:16
Locatie: Sint-Truiden
Uitgedeelde bedankjes: 12 keer
Bedankt: 27 keer

Wat is de output van $ploegnr vor uw 2de query?
volgens mij is uw variable $ploegnr leeg als je de 2de query runt
helmuteke
Premium Member
Premium Member
Berichten: 569
Lid geworden op: 08 feb 2010, 15:36
Uitgedeelde bedankjes: 3 keer
Bedankt: 27 keer

Dit is 2 ,zie je in de echo waar ik de call string toon
blaatpraat
Elite Poster
Elite Poster
Berichten: 1301
Lid geworden op: 10 jan 2014, 12:09
Uitgedeelde bedankjes: 32 keer
Bedankt: 103 keer

Vervang

Code: Selecteer alles

$result = mysql_query("call link2(".$data.")");
Door

Code: Selecteer alles

$result = mysql_query("call link2(".$data.")") or die(mysql_error());
En ook al haal je het aan in je post: maak gebruik van PDO, waarom nog eerst zitten klooien met mysql-*?
helmuteke
Premium Member
Premium Member
Berichten: 569
Lid geworden op: 08 feb 2010, 15:36
Uitgedeelde bedankjes: 3 keer
Bedankt: 27 keer

Dus alles overgezet naar PDO

Code: Selecteer alles

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);
//$data = $_POST["data"];

$data = "5142186";

$db = new PDO('mysql:host=localhost;dbname=24uur20175;charset=utf8mb4', 'root', 'xxxxxxx.');

$stmt = $db->query("call link2(".$data.")");
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo $row['ID'].' '.$row['naam']; //etc...
    $ploegnr = $row['ID'];
    $naam = $row['naam'];
}

$stmt = $db->query("call laatstedoorkoming(".$ploegnr.")");
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo $row['ID'].' '.$row['Tijdstamp']; //etc...
    $tijdstamplaatste = $row['Tijdstamp'];
    
}


?>
resultaat op scherm is

Code: Selecteer alles

2 The Crazy Bernarts
Fatal error: Call to a member function fetch() on boolean in /var/www/html/system/checkpdo.php on line 19
dus wederom val ik op de 2de query


EDIT :

Met onderstaande lukt het wel

Code: Selecteer alles

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);
//$data = $_POST["data"];

$data = "5142186";

$db = new PDO('mysql:host=localhost;dbname=24uur20175;charset=utf8mb4', 'root', 'xxxxxxxx');


$sql =  "call link2(".$data.")";
$stmt = $db->prepare($sql);
$stmt->execute();
if($stmt->errorCode() == 0) {
    while(($row = $stmt->fetch()) != false) {
        echo $row['ID'] .$row['naam'] . "\n";
        $ploegnr = $row[ID];
    }
} else {
    $errors = $stmt->errorInfo();
    echo($errors[2]);
}





$sql =  "call laatstedoorkoming(".$ploegnr.")";
$stmt = $db->prepare($sql);
$stmt->execute();
if($stmt->errorCode() == 0) {
    while(($row = $stmt->fetch()) != false) {
        echo $row['Tijdstamp'] . "\n";
    }
} else {
    $errors = $stmt->errorInfo();
    echo($errors[2]);
}






?>
Plaats reactie

Terug naar “Development”