Problemen met gegevens opvragen uit MySQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arvid Hamersma

Arvid Hamersma

19/07/2012 11:14:07
Quote Anchor link
Ik ben net begonnen met php programmeren.
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
 
PHP hulp

PHP hulp

08/05/2024 10:26:13
 
Kris Peeters

Kris Peeters

19/07/2012 13:43:02
Quote Anchor link
Je gebruikt ergens $sth als object, maar bij de while gebruik je $stmt.

Die moeten uiteraard de zelfde naam hebben
 
Arvid Hamersma

Arvid Hamersma

19/07/2012 15:05:44
Quote Anchor link
Haha, geniaal!!!!
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.
 
Arvid Hamersma

Arvid Hamersma

23/07/2012 10:20:53
Quote Anchor link
Ik heb het opgelost.
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;
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.