2012-08-13 45 views
16

我不試圖使用循環。我只從一行中的一列獲得一個值。我用下面的代碼得到了我想要的,但使用PDO必須有一個更簡單的方法。從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; 

這看起來像太多的行來從數據庫中獲取一個值。 :\

回答

14

您可以爲此創建一個功能,每次需要一個值時調用該函數

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

然後,你可以簡單地做:

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

所以,你只是需要創建一個功能一次,但可以將其重複用於具有不同列名稱的不同表格。

+5

使用串聯構建數據庫查詢很危險。更好地使用PDO準備的語句。 – bdsl 2017-01-22 11:31:52

2

就像它有太多的工作不得不進入你的車,開車去商店,在人羣中打架,抓住你需要的那一罐牛奶,然後爭取回家的路,就這樣你可以喝一杯奶昔。

所有這些階段都是必要的,每個後續步驟都取決於以前執行的步驟。

如果你反覆這樣做,那麼通過所有的方式來包裝一個函數,這樣你就可以重用它並將其減少到一個單一的getMyValue()調用 - 但在後臺所有代碼仍然必須存在。

+0

「所有這些階段是必要的」 不,他們不是。你應該走到商店。 ;-) – liamvictor 2016-04-09 12:22:54

32

您可以使用fetchColumn()

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