如何使用mysql通过选择查询获取行数

我是 golang 的新手。我想从 MySQL db 创建登录验证。我想要一个像在 PHP 中的方法mysqli_num_rows($res) == 1......我尝试过len(rows)或rows.Column()@fmt.Println("No of rows are :", rows)但它不会......我尝试过的代码......(这是一个虚拟代码)


rows, err := db.Query("select * from userLog where u_name = ? and u_pass = ?", uname, pswd)

if err != nil {

    log.Fatal(err)

}

fmt.Println("No of rows are :", rows)

defer rows.Close()

如果您有其他用于登录验证的解决方案,请建议并简要解释一下,请帮助我。


UYOU
浏览 211回答 3
3回答

动漫人物

据我了解,您需要检查数据库中是否存在用户和密码。如果是这样,你可以这样做:var isAuthenticated boolerr := db.QueryRow("SELECT IF(COUNT(*),'true','false') FROM userLog WHERE u_name = ? AND u_pass = ?", uname, pswd).Scan(&isAuthenticated)if err != nil {    log.Fatal(err)} 如果数据库包含提供的用户和密码 isAuthenticated 将设置为 true。

慕哥6287543

如果你已经执行了一个查询db.Query("SELECT * FROM some_tbl")并且有一个rows迭代器,那么你不能在不迭代的情况下提取行数。如您所见,没有任何返回行数的内容。因此,您唯一可以做的就是进行查询以选择行数: db.Query("SELECT COUNT(*) FROM some_tbl")

泛舟湖上清波郎朗

这是在 go 中返回 MySQL 选择中的行数的一种相当有效的方法:rows, selerr := db.Query(sql, StartDate, EndDate) // Queryif selerr != nil {     fmt.Fprint(w, selerr);     return }count := 0for rows.Next() {     count += 1 }rows, _ := db.Query(sql, StartDate, EndDate) // Query again - no error 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go