我是新来戈朗的。我想从MySQL数据库创建一个登录验证。我想要一个像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()
如果你有另一个登录验证的解决方案,那么请建议并简要解释一下,请帮助我。
发布于 2015-10-11 05:55:16
据我所知,您需要检查数据库中是否存在用户名和密码。如果是这样的话,你可以这样做:
var isAuthenticated bool
err := 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。
发布于 2016-06-12 07:03:34
如果您已经执行了一个查询db.Query("SELECT * FROM some_tbl")
,并且有一个rows
迭代器,那么如果不遍历它,就不能提取行数。如你所见,there nothing that returns the number of rows。
因此,您唯一能做的就是执行一个查询来选择行数:db.Query("SELECT COUNT(*) FROM some_tbl")
发布于 2017-02-09 05:50:09
下面是在go中返回MySQL select中的行数的一种相当有效的方法:
rows, selerr := db.Query(sql, StartDate, EndDate) // Query
if selerr != nil {
fmt.Fprint(w, selerr);
return
}
count := 0
for rows.Next() {
count += 1
}
rows, _ := db.Query(sql, StartDate, EndDate) // Query again - no error
https://stackoverflow.com/questions/33055527
复制相似问题