2009-11-03 16 views
22

Ho una domanda mysql che gli obiettivi di una singola colonna in una singola rigaRecupero singola riga, colonna singola DOP

"SELECT some_col_name FROM table_name WHERE user=:user" 

Dopo eseguo la dichiarazione $stmt->execute(); come faccio ad ottenere questa singola cellula direttamente collocato in una variabile senza loop? In altre parole, come ottenere

from $stmt->execute(); 

to $col_value = 100; 

Ho provato il 2 qui sotto, ma nessuno dei due ha lavorato .. La colonna è il numero 4 nella tabella originale, ma sto assumendo da allora nella mia dichiarazione prescelta sto selezionando solo , dovrebbe essere 1 quando si specifica il parametro per fetchColumn.

$col_value = $stmt->fetchColumn(); 
$col_value = $stmt->fetchColumn(0); 

Come potete vedere, sto provando a farlo nel minor numero possibile di righe.

risposta

30

Sei sicuro che è il ritorno le righe?
$stmt->fetchColumn()
è il modo corretto di recuperare un singolo valore, quindi probabilmente non è stato associato il parametro: user o semplicemente non è stata restituita alcuna riga.

+1

Grazie a tutti, si è rivelato essere qualcosa con il database stesso. Sapevo che avrebbe dovuto funzionare – Chris

0

Avete preparato la dichiarazione prima? (Prima $stmt->execute())

$stmt = $db->prepare("SELECT some_col_name FROM table_name WHERE user=:user"); 
10
$sql='SELECT some_col_name FROM table_name WHERE user=?'; 

$sth=$pdo_dbh->prepare($sql); 
$data=array($user); 

$sth->execute($data); 

$result=$sth->fetchColumn(); 
0

È possibile utilizzare questo:

$stmt->fetch(PDO::FETCH_COLUMN, $number_of_column); 
+1

Perché è in questo modo che cosa consigli? Cosa sta facendo? –

+1

@KevinPanko: è la stessa cosa ma mi piace in questo modo, normalizza il codice nel mio modello, chiamando fetch() o fetchAll() con un parametro come: column, both ... – Mimouni

1

io non sono sicuro perché così tante persone pasticcio questo in su:

$stmt = $dbh->prepare("SELECT `column` FROM `table` WHERE `where`=:where"); 
$stmt->bindValue(':where', $MyWhere); 
$stmt->execute(); 
$SingleVar = $stmt->fetchColumn(); 

Assicurarsi che si sta selezionando una specifica column nel query e non * o sarà necessario specificare il numero dell'ordine colonna in fetchColumn(), esempio: $stmt->fetchColumn(2); Di solito non è una buona idea perché t le colonne nel database possono essere riorganizzate da, qualcuno ...

Funzionerà correttamente solo con unique 'wheres'; fetchColumn() non restituirà un array.