@Kagtaviy

Как правильно обработать ответ?

Здравствуйте.
Есть запрос к Mysql:
rows, err := db.Query("SELECT * FROM users WHERE user_Id=?", userId)
if err != nil {
    panic(err)
}

Потом делаю так:
for rows.Next() {
    var user_Id string
    if err := rows.Scan(&user_Id); err != nil {
        log.Fatal(err)
    }
}
if err := rows.Err(); err != nil {
    log.Fatal(err)
}

Моя логика примерно такая. Я делаю поиск по колонке user_Id в таблице users с данными userId который я получил раньше. Если нету совпадений, то мне нужно например выполнить fmt.Println("Совпадений не найдено"). Подскажите пожалуйста, как сделать проверку на совпадения а потом вызвать Println?
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Вообще вижу первый раз код на го, но мне кажется что здесь какая-то лажа.
Что нужно? понять были ли совпадения в базе? Так если в rows что-то попало(в смысле запрос не вернул пустое множество) то в базе есть совпадения, иначе пишем совпадений не найдено.

UPD:
В вашем случае больше подойдет так:
id := 123
    var username string
    err := db.QueryRow("SELECT username FROM users WHERE id=?", id).Scan(&username)
    switch {
    case err == sql.ErrNoRows:
            log.Printf("No user with that ID.")
    case err != nil:
            log.Fatal(err)
    default:
            fmt.Printf("Username is %s\n", username)
    }

Это из официального мануала.
Ответ написан
Комментировать
0xcffaedfe
@0xcffaedfe
Developer & Reverser
_ "github.com/go-sql-driver/mysql"
import "github.com/jinzhu/gorm"

type User struct {
	id   int    `json:"id"`
	name string `json:"name"`
	/*
		Some crap here....
	*/
}

func GetUsersById(id int) (user *User, err error) {
	user = &User{}
	if err = DB.Table("users").Where("id = ?", id).First(&user).Error; err != nil {
		return user, err
	}
	return user, err
}


Я юзаю вот так вот.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы