PHP5 PDO fetchAll

Nambot

Mitglied
Hi!
Ich arbeite zur Zeit ein bißchen mit PDO. Habe nun folgenden Code geschrieben:
PHP:
$qvar = $element;
if(is_numeric($element))
{
	$getvalue = $this->db -> prepare("SELECT
									value
                                         FROM
										".$GLOBALS['tbl']['config']."
									WHERE
										itemid = ':element'");
}elseif(is_string($element)) {
	$getvalue = $this->db -> prepare("SELECT
										value
									FROM
										".$GLOBALS['tbl']['config']."
									WHERE
											name = ':element'");
} else {
	return false;
}
		
$getvalue -> bindParam(':element', $qvar);
$getvalue -> execute();
$result = $getvalue -> fetchAll();

if(!empty($result))
{
	return $result['value'];
} else {
	return false;
}
Ich habe nur leider das Problem, dass kein Befehl false oder ähnliches ausgibt, PDO keine Fehlermeldung ausgibt, also eigentlich alles klappe sollte. Leider ist aber nicht das erwartete Ergebnis in der Variable $result. Wenn ich $result mit print_r() ausgeben lasse erhalte ich ein simples
Code:
Array( )
Wenn ich den gleichen Query, allerdings ohne Platzhalter, dass heißt die Variable wird gleich in den Query eingefügt, mit der normalen mysql Extension ausführe, funktioniert alles einwandfrei:
PHP:
mysql_connect('', '', '');
mysql_select_db('');
print_r($result = mysql_fetch_array(mysql_query("SELECT
										value
									FROM
										".$GLOBALS['tbl']['config']."
									WHERE
										name = '".$element."'")));
Hat irgendjemand eine Ahnung wieso das Ganze mit PDO nicht funktioniert? Ich vermute ja, dass es am fetchAll liegt, da alle wie sie sollen true zurückgeben, nur fetchAll sollte ja eigentlich ein Array mt dem Ergebnis zurückgeben.
 
OK, ich habe durch ausprobieren herausgefunden, dass es wohl irgendwie an der Ersetzung der Platzhalter liegt. Wenn ich den Wert oder die Variable direkt eingebe, funktioniert alles einwandfrei. Was mache ich falsch?
 
Hallo,

ich weiß, dass das Thema durchaus älter ist ;-) Allerdings war ich gerade in Google auf der Suche nach einer ähnlichen Thematik und habe dann diesen Thread gesehen. Da so auch potentiell andere das Thema aufsuchen könnten, hier eine Lösung zum ursprünglichen Anliegen des TOs:

Sein SQL-Statement muss so lauten:
Code:
SELECT
my_value
FROM
my_table
WHERE
my_element = :element
 
Zurück