2016-06-09 10 views
-2

Jetzt verwende ich diesen Code:PDO: holt direkt ersten Wert mit ‚PHP 5.3‘

global $dbh; 

$sql = "SELECT filename FROM t_item where id=".$id; 
$req = $dbh->query($sql)->fetch(); 
$file = $req['filename']; 

mit: PHP 5.3

Ich brauche dies viele Male zu wiederholen, ist es möglich, direkt zu holen der Wert, ohne ihn an $ req zu übergeben?

+0

Warum schreiben Sie keine Funktion/Methode dafür? – Daan

+0

Nicht auf PHP 5.3. Aber wenn Sie auf PHP 5.4 upgraden, können Sie das Array-De-Referencing verwenden und '$ dbh-> query ($ sql) -> fetch() ['filename']' '. Obwohl ich zustimme, macht es Sinn, eine einfache Funktion zu schreiben. – jszobody

+1

Probieren Sie echo $ req = $ dbh-> Abfrage ($ sql) -> fetchColumn(); ' – Saty

Antwort

1

Um nur erster Wert verwenden fetchColumn() statt fetch() zu bekommen, weil es nur eine einzige Spalte von der nächsten Zeile eines

$sql = "SELECT filename FROM t_item where id=".$id; 
echo $dbh->query($sql)->fetchColumn(); 

gesetzt Ergebnis Gibt

Bessere Nutzung bindParam SQL-Injection es bilden zu verhindern

$sql = "SELECT filename FROM t_item where id= :id"; 
$stmt = $dbh->prepare($sql); 
$stmt->bindParam(':id', $id, PDO::PARAM_INT); 
$stmt->execute(); 
$stmt->fetchColumn(); 
+0

Nicht mein DV, aber [Little Bobby] (http://bobby-tables.com/) sagt [dein Skript ist für SQL-Injection-Attacken gefährdet.] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php). Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –

+0

Yaa ich weiß, aber die OP wollen __fetch direkt den Wert, ohne es zu $ ​​req__ als Erwähnung ist Frage, dass ist der Grund, ich bin nicht vorschlagen, binden und bereiten Aussage !! – Saty

+1

Sie können direkt abrufen und @Saty noch vorbereiten. Du weißt, dass! –

-1

Verkapseln Sie diese Routinen in eine Funktion und Sie können die Funktion jederzeit von überall in Ihrem Skript wie folgt aufrufen:

<?php 

     function getFilename($id){ 
      global $dbh; 
      $sql = "SELECT filename FROM t_item where id=".$id; 
      $file =$dbh->query($sql)->fetchColumn(); 
      return $file; 
     } 

     echo getFilename(2); // ECHOES THE FILENAME FOR THE ENTITY WITH ID=2 
+0

Ich mag diese Antwort nur für eine Sache - [Little Bobby] (http://bobby-tables.com/) sagt [Ihr Skript ist für SQL Injection Attacks gefährdet.] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection- in-php). Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –