PHP - 从MySQL读取单个记录的简单方法

neo*_*eon 56 php mysql

PHP从MySQL数据库中读取单个记录的最佳方法是什么?例如:

SELECT id FROM games
Run Code Online (Sandbox Code Playgroud)

我试图在旧问题中找到答案,但没有运气.

Dan*_*man 57

$id = mysql_result(mysql_query("SELECT id FROM games LIMIT 1"),0);
Run Code Online (Sandbox Code Playgroud)

  • 只需添加最简单的本机php_mysql方法即可获取单个值以获得完整性. (8认同)
  • 绝对是最好的答案.我总是使用5行.多好帮手! (4认同)
  • 这在 PHP 5.5.0 中被弃用,并在 PHP 7.0.0 中被删除。 (4认同)

Ryt*_*ius 31

$link = mysql_connect('localhost','root','yourPassword')
mysql_select_db('database_name', $link);
$sql = 'SELECT id FROM games LIMIT 1';
$result = mysql_query($sql, $link) or die(mysql_error());
$row = mysql_fetch_assoc($result);
print_r($row);
Run Code Online (Sandbox Code Playgroud)

ChrisAD的答案中缺少一些东西.连接到mysql之后,选择数据库是至关重要的,并且die()语句允许您在发生错误时查看错误.

小心它只有在数据库中有1条记录才有效,因为否则你需要添加WHERE id=xx或类似的东西只能获得一行而不是更多.你也可以访问你的id$row['id']

  • 这些人错了,`$ id = mysql_result($ result,0)`只为你提供了一个值.如果您不想,则不必将整行提取到关联数组中. (25认同)

Tom*_*igh 21

使用PDO你可以做这样的事情:

$db = new PDO('mysql:host=hostname;dbname=dbname', 'username', 'password');

$stmt = $db->query('select id from games where ...');
$id = $stmt->fetchColumn(0);
if ($id !== false) {
    echo $id;
}
Run Code Online (Sandbox Code Playgroud)

你显然也应该检查是否PDO::query()执行查询OK(通过检查结果或告诉PDO反而抛出异常)


prl*_*l77 14

假设您正在使用自动递增主键(这是正常的处理方式),那么您可以使用以下命令访问放入数据库的最后一行的键值:

$userID = mysqli_insert_id($link);
Run Code Online (Sandbox Code Playgroud)

否则,您将需要了解有关您要查找的行的更多详细信息,例如电子邮件地址.在不知道您的表结构的情况下,我们不能更具体.

无论哪种方式,要限制您的SELECT查询,请使用如下WHERE语句:(通用示例)

$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE something = 'unique'"));
$userID = $getID['userID'];
Run Code Online (Sandbox Code Playgroud)

(具体示例)或更具体的示例:

$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE userID = 1"));
$userID = $getID['userID'];
Run Code Online (Sandbox Code Playgroud)


Rob*_*t K 8

警告!您的SQL不是一个好主意,因为它将选择所有行(没有WHERE子句假定为"WHERE 1"!)并且如果您有大量行,则阻塞您的应用程序.(当1执行时,选择1,000行的重点是什么?)因此,当只选择一行时,请确保指定LIMIT子句:

$sql = "SELECT id FROM games LIMIT 1";  // Select ONLY one, instead of all
$result = $db->query($sql);
$row = $result->fetch_assoc();
echo 'Game ID: '.$row['id'];
Run Code Online (Sandbox Code Playgroud)

这种差异要求MySQL 选择第一个匹配的记录,因此对表进行排序很重要,或者你应该使用WHERE子句.但是,找到一条记录所需的内存和时间要少得多,而不是每条记录和输出第一行.


dan*_*nny 7

使用 LIMIT 1. 很简单。

$rows = $db->query("select id from games LIMIT 1");
$row  =  $rows->fetch_object();
echo $row->id;
Run Code Online (Sandbox Code Playgroud)


Mag*_*usK 5

面向对象风格的另一种答案。为我找到了这个解决方案:

$id = $dbh->query("SELECT id FROM mytable WHERE mycolumn = 'foo'")->fetch_object()->id;
Run Code Online (Sandbox Code Playgroud)

只返回一个 id。验证您的设计确保您得到正确的设计。


Chr*_*ale 2

首先连接到数据库。然后构建查询字符串。然后启动查询并存储结果,最后使用其中一种获取方法从结果中获取所需的行。

$link = mysql_connect('localhost','root','yourPassword')
mysql_select_db('database',$link);
$sql = 'SELECT id FROM games'
$result = mysql_query($sql,$link);

$singleRow = mysql_fetch_array($result) 
echo $singleRow;
Run Code Online (Sandbox Code Playgroud)

编辑:很抱歉,忘记了数据库连接。现在添加了