2012-08-13 7 views
16

No estoy tratando de usar un bucle. Solo un valor de una columna de una fila. Obtuve lo que quiero con el siguiente código, pero tiene que haber una forma más fácil de usar PDO.devuelve un valor de la base de datos 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; 

Esto parece demasiadas líneas para obtener un valor de la base de datos. : \

Respuesta

14

Se puede crear una función para esto y llamar a esa función cada vez que necesite un único valor

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

, entonces puede simplemente hacer:

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

por lo que necesita para crear esa función solo una vez, pero puede reutilizarlo para diferentes tablas con diferentes nombres de columna.

+5

Es peligroso utilizar la concatenación para crear una consulta de base de datos. Es mucho mejor utilizar una declaración preparada PDO. – bdsl

2

Al igual que es demasiado trabajo tener que subir a su automóvil, manejar hasta la tienda, abrirse paso entre las multitudes, agarrar la jarra de leche que necesita y luego volver a casa luchando, tan solo puedes tomar un batido.

Todas estas etapas son necesarias, y cada paso posterior depende de los anteriores que se hayan realizado.

Si hace esto repetidamente, entonces por favor, envuelva una función para poder reutilizarlo y reducirlo a una sola llamada a getMyValue(), pero en el fondo todo ese código aún debe estar presente.

+0

"Todas estas etapas son necesarias" No, no lo son. Y deberías caminar a las tiendas. ;-) – liamvictor

32

Puede utilizar fetchColumn():

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