【问题标题】:What is the best way to select one row in MySQL using PHP?使用 PHP 在 MySQL 中选择一行的最佳方法是什么?
【发布时间】:2011-04-13 22:44:35
【问题描述】:

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

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

【问题讨论】:

  • 在两者之间选择的原因是什么? 73 微秒的加速?如果您只是在获取关联数组和数字索引数组之间进行选择,请使用更容易使用的数组。

标签: php mysql database row fetch


【解决方案1】:

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

Source

【讨论】:

    【解决方案2】:

    你为什么不在mysql语句中使用LIMIT 1,不管你有什么一行。

    【讨论】:

    • 如果他知道id,那么他的查询已经看起来像WHERE id = 'foo'
    • @Bacon 这和limit 1有什么关系?
    • 我认为 Bacon Bits 假设 id 是独一无二的,听起来确实如此。
    • @Wiseguy,和id有什么关系??? OP 只想要第一行,所以没关系......
    • 该评论是关于您对@Bacon Bits 评论的问题,而不是您的答案。上面改写了。
    【解决方案3】:

    这两个功能几乎相同,只是名字让你觉得不一样:

    $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]);
    

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

    【讨论】:

      猜你喜欢
      • 2014-06-24
      • 2017-02-04
      • 2012-06-07
      • 2014-12-14
      • 2014-05-27
      • 2011-01-23
      • 2023-03-17
      • 2015-04-08
      相关资源
      最近更新 更多