从MySQL返回一行

6

这可能是一个业余问题,但我一直想知道的是,如何用PHP从MySQL查询中选择一行数据?比如,你想通过唯一的ID选取某个值(因为你知道只会有一行数据匹配你的请求),那么需要怎样操作呢?你还需要使用while循环和mysql_fetch_row函数吗?

$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?

如PHP手册中所述,对于mysql_query()函数:不建议使用此扩展。相反,应该使用MySQLiPDO_MySQL扩展。有关更多信息,请参见MySQL:选择API指南和相关FAQ - eggyal
7个回答

12

加上limit 0,1,对于PHP7使用mysqli

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

echo $res["age"]; 

编辑注:我批准了将 mysql 更改为 mysqli 的编辑,因为 mysql 函数已从 PHP7 中弃用,而当前最低支持的版本是 PHP7。对于仍在使用 PHP5 的时间旅行者来说,mysql 是正确的函数。 - jnovack

2
如果uid是您的主键,或者它具有唯一约束,则可以简单地调用mysql_fetch_row($res)一次。
如果您想要验证您实际上获得了结果,可以检查mysql_num_rows($res) == 1

1

不需要任何循环,只需调用函数从查询结果集中提取一行:

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

我没有添加任何限制,因为在这种特定情况下使用主键作为过滤器,使用Limit只是多余的。 - Daniel Aranda

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;
?>

0
  1. 使用这段代码。它将返回一个包含所有属性的对象。

fetch_object => 将结果集中的当前行作为一个对象返回。

$sql = "SELECT * from contacts where id=1";
$result = $conn->query($sql);
$allData =$result -> fetch_object();
var_dump($allData);

使用这段代码,它将返回一个关联数组。 fetch_assoc => 以关联数组的形式获取结果行。
$sql = "SELECT * from contacts where id=1";
$result = $conn->query($sql);
$allData =$result -> fetch_assoc();
var_dump($allData);

根据您的需求,您可以使用fetch_assocfetch_object


0

mysql_fetch_assoc 这个扩展在 PHP 5.5.0 中已被弃用,并在 PHP 7.0.0 中被移除。请使用 mysqli_fetch_assoc - 它将以关联数组的形式获取结果行。

示例1:面向对象风格

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
echo $row['Name'];

示例2:过程式风格

$link = mysqli_connect("localhost", "my_user", "my_password", "dbname");

/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 1";
if ($result = mysqli_query($link, $query)) {
/* fetch associative array */
$row = mysqli_fetch_assoc($result);
echo $row['Name'];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接