使用 PHP 在 MySQL 中选择一行的最佳方法是什么?

发布于 2024-10-31 19:52:07 字数 152 浏览 1 评论 0原文

我有一个 mysql 语句,它根据 id 仅获取一条记录。我想知道使用 mysql_fetch_row 或类似的东西是否比使用 mysql_fetch_array 之类的东西更好,只抓取数据库中的一行。

使用 mysql_fetch_row 似乎是常识,但我只是想确定一下。

I have a mysql statement which grabs just one record based on an id. I want to know if using mysql_fetch_row or something along the lines of that is better then using something such as mysql_fetch_array, for just grabbing one row in a database.

It may seem like common sense to go with the mysql_fetch_row but I just want to make sure.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苦妄 2024-11-07 19:52:07

需要注意的重要一点是
使用mysql_fetch_array()不是
明显比使用慢
mysql_fetch_row(),同时它提供了
显着的附加值。

来源

An important thing to note is that
using mysql_fetch_array() is not
significantly slower than using
mysql_fetch_row(), while it provides a
significant added value.

Source

陪你到最终 2024-11-07 19:52:07

为什么不在 mysql 语句中使用 LIMIT 1 ,无论什么都会有一行。

why don't you just use LIMIT 1 inside the mysql statement and no matter what you will have one row.

围归者 2024-11-07 19:52:07

这两个功能几乎相同,只是名称让您认为它有所不同:

$r=mysql_query('SELECT name,email FROM tbl LIMIT 1');
var_dump(mysql_fetch_assoc($r));
    // array('name'=>[dbName], 'email'=>[dbEmail]);
var_dump(mysql_fetch_row($r));
    // array([dbName], [dbEmail]);
    // It's a normal incremental integer index array
var_dump(mysql_fetch_array($r,MYSQL_ASSOC));
    // same as mysql_fetch_assoc();
var_dump(mysql_fetch_array($r,MYSQL_NUM));
    // same as mysql_fetch_row();
var_dump(mysql_fetch_array($r,MYSQL_BOTH));
    // array(0=>[dbName], 1=>[dbEmail], 'name'=>[dbName], 'email'=>[dbEmail]);

手册还表明这两个功能在性能方面表现良好。当地的测试也暗示了同样的方向。我建议您不要担心节省的 0.0001 时间/内存,并找到应用程序中真正的瓶颈。

The two functions are almost identical, the name is just making you think it's different:

$r=mysql_query('SELECT name,email FROM tbl LIMIT 1');
var_dump(mysql_fetch_assoc($r));
    // array('name'=>[dbName], 'email'=>[dbEmail]);
var_dump(mysql_fetch_row($r));
    // array([dbName], [dbEmail]);
    // It's a normal incremental integer index array
var_dump(mysql_fetch_array($r,MYSQL_ASSOC));
    // same as mysql_fetch_assoc();
var_dump(mysql_fetch_array($r,MYSQL_NUM));
    // same as mysql_fetch_row();
var_dump(mysql_fetch_array($r,MYSQL_BOTH));
    // array(0=>[dbName], 1=>[dbEmail], 'name'=>[dbName], 'email'=>[dbEmail]);

The manual also suggests performance wise the two functions fared well. Local tests hint in the same direction. I'd suggest you not worry about the .0001 time/memory saved and find true bottlenecks in your applications.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文