Page 1 of 1

PDO -> Execute

Posted: Sun Oct 24, 2010 9:08 pm
by wasir
I've got a PHP PDO script that works fine with value in the query but doesn't work with question mark (?)

This one doesn't work.
Error - Warning: Invalid argument supplied for foreach() in <filename> on line <line number pointing on foreach...>

Code: Select all

$sql = 'SELECT id,firstName,lastName FROM tableName WHERE id=?';
$pds = $pdo->prepare($sql);
$pds->execute(array($_SESSION['ftlogin']));
foreach ($pdo->query($sql) as $row) {
	$name = $row['firstName'].' '.$row['lastName'];
}
But this one works fine

Code: Select all

$sql = 'SELECT id,firstName,lastName FROM tableName WHERE id="'.$_SESSION['ftlogin'].'"';
$pds = $pdo->prepare($sql);
$pds->execute();
foreach ($pdo->query($sql) as $row) {
	$name = $row['firstName'].' '.$row['lastName'];
}
What am I doing wrong?

Re: PDO -> Execute

Posted: Sun Oct 24, 2010 10:08 pm
by Weirdan
The problem is that you're issuing another query instead of fetching data from executed statement. PDO::query() performs a query on its own. The following should work:

Code: Select all

$sql = 'SELECT id,firstName,lastName FROM tableName WHERE id=?';
$pds = $pdo->prepare($sql);
$pds->execute(array($_SESSION['ftlogin']));
$pds->setFetchMode(PDO::FETCH_ASSOC);
foreach ($pds as $row) {
        $name = $row['firstName'].' '.$row['lastName'];
}

Re: PDO -> Execute

Posted: Mon Oct 25, 2010 12:23 am
by wasir
Thanks Weirdan. Appreciate your help.