Problemen met gegevens opvragen uit MySQL
Ik heb een web pagina gemaakt die met een druk op een knop een xml bestand download en lokaal weg schrijft.
Daarna wordt het bestand ingelezen met SimpelXML.
Tot zo ver gaat het goed.
Wat ik al een redelijke prestatie vond van me zelf (lang leve google :))
Hierna wil ik een query opvragen om te kijken of een bepaalde waarde al in de database staat.
Hier stopt het script zonder foutmelding.
de code die ik gebruik is als volgt:
function SQLGet($Query){
$user_name = "OC";
$password = "OC";
$database = "OCdb";
$server = "127.0.0.1";
$result = array();
try {
echo "Connecting to $server with database $database<br />";
$db = new PDO("mysql:host=$server;dbname=$database", $user_name, $password);
Echo "Connected to database <br />";
echo $Query . "<br />";
$sth = $db -> prepare($Query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
echo "1.. ";
$sth -> execute();
echo "2.. <br />";
$i=0;
while ($row = $stmt->fetch(PDO::FETCH_LAZY, PDO::FETCH_ORI_NEXT)) {
$result[$i] = $row;
echo "Er is een resultaat weg geschreven op lokatie $i in de array<br />";
$i++;
}
$db = NULL;
return $result;
} catch(Exception $ex) {
echo $ex -> getMessage() . "<br />";
return NULL;
} catch(PDOException $e) {
echo $e -> getMessage() . "<br />";
return NULL;
}
}
Echter als ik deze uitvoer loopt het script vast.
Het resultaat van de aktie is:
Connecting to 127.0.0.1 with database OCdb
Connected to database
SELECT product_id FROM product WHERE model = '0633178'
1.. 2..
Heeft iemand een idee wat ik hier fout doe en hoe het wel gaat werken??
Alvast bedankt,
Arvid
Gewijzigd op 19/07/2012 11:33:06 door Arvid Hamersma
Die moeten uiteraard de zelfde naam hebben
en daar heb ik mij 3 uur op dood zitten staren...
Het werkt nu :)
Hartstikke bedankt Kris!!!
Toevoeging op 19/07/2012 15:55:47:
Hmmm... het werkt nog niet helemaal zo als ik het had gedacht.
In de volgende functie wil ik de waarde gebruiken die terug gekomen is van de functie SQLGet($query)
Hier de code die ik daar voor gebruik:
function IsNew($model) {
//Bepalen of het product al bestaat in de database.
$query = "SELECT count(*) as aantal
FROM product
WHERE model = '$model'";
$result = SQLGet($query);
echo "Er zijn " . count($result) . " regels terug gekomen met " . count($result[0]) . " veld(en). <br />";
echo $result[0]['aantal'] . "<br />";
var_dump($result);
echo "<br />";
if ($result[0]['aantal'] == 0) {
echo "Not found <br />";
return TRUE;
} else {
echo "Found <br />";
return FALSE;
}
}
Echter bij 'echo $result[0]['aantal'] . "<br />";' krijg ik een lege waarde...
En bij 'var_dump($result);' krijg ik:
array(1) { [0]=> object(PDORow)#455 (2) { ["queryString"]=> string(74) "SELECT count(*) as aantal FROM product WHERE model = '0633178'" ["aantal"]=> NULL } }
Als ik de query in PHPMyAdmin uitvoer dan krijg ik netjes 0 of 1 terug.
Groetjes een verwarde Arvid.
Ik heb de code iets gewijzigd.
De nieuwe code :
$sth = $db -> prepare($Query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
echo "1.. ";
$sth -> execute();
echo "2.. <br />";
$i = 0;
while ($row = $sth -> fetch())//PDO::FETCH_LAZY, PDO::FETCH_ORI_NEXT))
{
$result[$i] = $row;
echo "Er is een resultaat weg geschreven op lokatie $i in de array<br />";
$i++;
}
$db = NULL;