2012-07-02 116 views
3

業餘問題,但我一直在想。什麼是從MySQL查詢中選擇一行的PHP?你正在用唯一的ID選擇一些東西(你知道只有一行符合你的請求)並且只想得到那個值。你還需要使用while循環和mysql_fetch_row嗎?從MySQL返回一行

$query = "SELECT name,age FROM people WHERE uid = '2'"; 
$result = mysql_query($query); 

// what php is used to return the name and age? preferably without a loop? 
+0

如PHP手冊爲['的mysql_query()'](http://php.net/manual/en陳述/function.mysql-query.php)函數:*不推薦使用這個擴展名。相反,[MySQLi](http://www.php.net/manual/en/book.mysqli.php)或[PDO_MySQL](http://www.php.net/manual/en/ref.pdo-應該使用mysql.php)擴展名。另請參見[MySQL:選擇API](http://www.php.net/manual/en/mysqlinfo.api.choosing.php)指南和[相關FAQ](http://www.php.net/manual /en/faq.databases.php#faq.databases.mysql.deprecated)獲取更多信息。* – eggyal

回答

10

添加limit 0,1

$query = "SELECT name,age FROM people WHERE uid = '2' LIMIT 0,1"; 
$result = mysql_query($query); 
$res = mysql_fetch_assoc($result); 

echo $res["age"]; 
1

沒有要求,只要調用函數從查詢結果集中提取一行任何循環:

$query = "SELECT name,age FROM people WHERE uid = '2'"; 
$result = mysql_query($query); 
$row = mysql_fetch_assoc($result); 
var_dump($row); 
+0

我沒有添加任何限制,因爲使用主鍵作爲過濾器(因爲它在這種特定情況下),使用限制是只是多餘的。 –

1

如果uid是你的主鍵,或者它有一個約束,您可以簡單地調用mysql_fetch_row($res)一次。

如果你想驗證你確實得到了結果,你可以檢查是否mysql_num_rows($res) == 1

0

在您的查詢中添加LIMIT。例如,

SELECT name,age FROM people WHERE uid = '2' LIMIT 1 
0

下面是另一個例子:

<?php 
    mysql_connect("server","user","password") 
    or die ('Connection failed: ' . mysql_error()); 
    // 
    mysql_select_db ("database") 
    or die ('Selection failed: ' . mysql_error()); 
    // 
    $portaQuery = "SELECT user_name FROM table_users"; 
    // 
    $portaResult = mysql_query($portaQuery) 
    or die ('Query failed: ' . mysql_error()); 
    // 
    $displayUserName = mysql_result ($portaResult, 0, "user_name"); 
    // 
    echo $displayUserName; 
?>