【问题标题】:Node.js alternative to mysqli_fetch_array()?Node.js 替代 mysqli_fetch_array()?
【发布时间】:2015-09-16 18:56:31
【问题描述】:
<?php
        $connect = mysqli_connect('localhost', "root", "", "test");
        if(!$connect){
            die(mysqli_connect_error());
        }

        $sql = "SELECT * FROM articles";
        $result = mysqli_query($connect, $sql) or die(mysqli_connect_error());
        while($row = mysqli_fetch_array($result)){ ?>
            <div class='article-div'>;
                <a href='articleviewer.php?id=$row[ID]' class='article-title'> . <?php $row['Title'] ?>. </a>;
            </div>;
        <?php }
        mysqli_close($connect);
    ?>

所以我在 PHP 中有这段代码,这真的是不言自明的。它在一个数组中获取 MySQL 并在发布文章标题的同时为每篇文章打印 div。如何在 node.js 中使用 express 执行此操作?我安装了“mysql”模块。那么 mysqli_fetch_array() 等价的节点是什么?

【问题讨论】:

  • 阅读mysql 模块的文档。如果您在实施某些特定方法时遇到困难,那将是一个更合适的问题。
  • 要更抽象一点,你可以试试 kbex.js:knexjs.org

标签: javascript php mysql node.js express


【解决方案1】:

正如 npm 的 mysql 模块文档所述,您只需进行如下查询:

connection.query('SELECT * FROM `books` WHERE `author` = "David"', function (error, results, fields) {
    // error will be an Error if one occurred during the query 
    // results will contain the results of the query 
    // fields will contain information about the returned results fields (if any) 
});

然后您可以通过简单的循环遍历results。 注意:在文档的开头,有一个关于如何连接到数据库和配置它的解释。先读一下:)

【讨论】:

  • 大声笑,是的,我在发布问题后想通了。我完全忘记阅读文档,我只是用谷歌搜索并没有发现任何东西所以来到这里。非常感谢。
【解决方案2】:

您可以使用mysqlnode-mysql 模块:

npm install -g mysql

npm install -g node-mysql

下面是示例用法(假设有一个名为example_table 的表,在数据库node_dev 中有IDFileNameFileSize 列):

var mysql = require('mysql'),
qid = '1'; // example ID

var db = mysql.createConnection({
  host     : 'localhost',
  user     : 'DATABASE_USER_HERE',
  password : 'DATABASE_PASSWORD_HERE',
  database : 'node_dev'
});

/* SQL */
db.connect();
db.query('SELECT * FROM `example_table` WHERE RowID=?', [qid], function(err, rows, fields) {
  if (err) {
    throw err;
    console.error(err);
  } else {
    for (var i = 0, len = rows.length; i < len; i++) {
      // either of those two will do:
      console.log(rows[i].FileName, rows[i].FileSize); 
      console.log(rows[i]['FileName'], rows[i]['FileSize']);
    }
  }
});
db.end();
/* SQL */

您可能(大部分时间)想要使用其他节点模块(例如 express、http/https、Oauth2)编写简单的中间件/微服务,这些模块将监视请求、捕获参数并发送一些解析为 JSON 或其他内容的输出.

【讨论】:

    猜你喜欢
    • 2016-06-07
    • 1970-01-01
    • 2013-07-22
    • 2015-05-15
    • 1970-01-01
    • 2015-06-22
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多