2012-08-13 22 views
16

Non sto cercando di utilizzare un ciclo. Ho solo un valore da una colonna di una riga. Ho ottenuto quello che voglio con il seguente codice, ma ci deve essere un modo più semplice con PDO.restituisce un valore dal database con mysql php pdo

try { 
     $conn = new PDO('mysql:host=localhost;dbname=advlou_test', 'advlou_wh', 'advlou_wh'); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } catch(PDOException $e) { 
     echo 'ERROR: ' . $e->getMessage(); 
    } 

$userid = 1; 

$username = $conn->query("SELECT name FROM `login_users` WHERE username='$userid'"); 
$username2 = $username->fetch(); 
$username3 = $username2['name']; 

echo $username3; 

Questo sembra troppe righe per ottenere un valore dal database. : \

risposta

14

Si potrebbe creare una funzione per questo e chiamare tale funzione ogni volta che è necessario un unico valore

function getSingleValue($tableName, $prop, $value, $columnName) 
{ 
    $q = $conn->query("SELECT `$columnName` FROM `$tableName` WHERE $prop='".$value."'"); 
    $f = $q->fetch(); 
    $result = $f[$columnName]; 
    return $result; 
} 

allora si può semplicemente fare:

$singleValue = getSingleValue('login_users', 'username', $userid, 'name'); // will get you the value 

Quindi è necessario creare tale funzione solo una volta, ma può riutilizzarlo per tabelle diverse con nomi di colonne diversi.

+5

È pericoloso utilizzare la concatenazione per creare una query di database. Molto meglio usare una dichiarazione preparata da un PDO. – bdsl

2

Proprio come è troppo lavoro da fare per entrare in auto, andare al negozio, farsi strada tra la folla, afferrare quella brocca di latte di cui hai bisogno, quindi combattere per tornare a casa, solo così puoi avere un milkshake.

Tutte queste fasi sono necessarie e ogni passaggio successivo dipende da quelle precedenti.

Se si esegue questa operazione più volte, quindi con tutti i mezzi avvolgere una funzione intorno ad esso in modo da poter riutilizzare e ridurre il basso per una singola chiamata getMyValue() - ma sullo sfondo tutto ciò che il codice ancora devono essere presenti.

+0

"Tutte queste fasi sono necessarie" No, non lo sono. E dovresti andare ai negozi. ;-) – liamvictor

32

È possibile utilizzare fetchColumn():

$q= $conn->query("SELECT name FROM `login_users` WHERE username='$userid'"); 
$username = $q->fetchColumn(); 
Problemi correlati