2012-08-13 17 views
16

Nie próbuję użyć pętli. Mam tylko jedną wartość z jednej kolumny z jednego wiersza. Mam to, czego chcę, za pomocą poniższego kodu, ale musi być łatwiejszy sposób korzystania z PDO.zwraca jedną wartość z bazy danych z 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; 

To wygląda zbyt wiele linii, aby uzyskać jedną wartość z bazy danych. : \

Odpowiedz

14

Można by utworzyć funkcję dla tego i wywołać tej funkcji za każdym razem trzeba pojedynczej wartości

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

Następnie można po prostu zrobić:

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

Więc trzeba stworzyć taką funkcję właśnie raz, ale można go ponownie użyć dla różnych tabel o różnych nazwach kolumn.

+5

Używanie konkatenacji do budowania zapytania do bazy danych jest niebezpieczne. Znacznie lepiej jest użyć oświadczenia przygotowanego przez PDO. – bdsl

2

Tak jak zbyt dużo pracy wymaga wsiąść do samochodu, pojechać do sklepu, przebić się przez tłum, złapać ten dzbanek z mlekiem, którego potrzebujesz, a następnie walczyć w drodze powrotnej do domu, tak możesz mieć koktajl mleczny.

Wszystkie te etapy są konieczne, a każdy kolejny krok zależy od wcześniej wykonanych czynności.

Jeśli robisz to wielokrotnie, to w każdym razie zawiń funkcję wokół niego, aby móc go ponownie użyć i zredukować do pojedynczego wywołania getMyValue() - ale w tle cały ten kod nadal musi być obecny.

+0

"Wszystkie te etapy są konieczne" Nie, nie są. I powinieneś iść do sklepów. ;-) – liamvictor

32

Można użyć fetchColumn():

$q= $conn->query("SELECT name FROM `login_users` WHERE username='$userid'"); 
$username = $q->fetchColumn(); 
Powiązane problemy