Pagina 1 van 1

Meerdere sql queries in php

Geplaatst: 14 jul 2017, 20:36
door helmuteke
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

Re: Meerdere sql queries in php

Geplaatst: 14 jul 2017, 20:50
door guntherstassen
Wat is de output van $ploegnr vor uw 2de query?
volgens mij is uw variable $ploegnr leeg als je de 2de query runt

Re: Meerdere sql queries in php

Geplaatst: 14 jul 2017, 20:54
door helmuteke
Dit is 2 ,zie je in de echo waar ik de call string toon

Re: Meerdere sql queries in php

Geplaatst: 14 jul 2017, 21:19
door blaatpraat
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-*?

Re: Meerdere sql queries in php

Geplaatst: 15 jul 2017, 10:36
door helmuteke
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]);
}






?>