Pertanyaan MySQL dengan SET Pembolehubah dalam Go
Latar Belakang:
Pengguna cuba untuk laksanakan pertanyaan MySQL yang kompleks menggunakan Go yang melibatkan penetapan pembolehubah pengguna sebelum menjalankan pertanyaan. Pertanyaan berjaya dilaksanakan daripada konsol, tetapi ia gagal dengan ralat sintaks apabila dijalankan melalui Go. Pengguna mempersoalkan kemungkinan menggunakan pembolehubah SET dengan kaedah Go's Query() .
Penyelesaian:
Isu pengguna telah diselesaikan dengan membuat pengubahsuaian berikut:
Konfigurasi DSN:
Penukaran Pangkalan Data dan Jadual:
Kod:
Dengan pengubahsuaian ini, kod yang disediakan oleh pengguna harus berfungsi seperti yang dijangkakan:
<code class="go">func (d *DB) SelectByUserId(uid string, srt string, pg, lim int) ([]Inventory, error) { query := ` SET @user_id := ?, @orderBy := ?; SELECT * FROM inventory WHERE user_id = @user_id ORDER BY (CASE WHEN @orderBy = 'type,asc' THEN type END), (CASE WHEN @orderBy = 'type,desc' THEN type END) DESC, (CASE WHEN @orderBy = 'visible,asc' THEN visible END), (CASE WHEN @orderBy = 'visible,desc' THEN visible END) DESC, (CASE WHEN @orderBy = 'create_date,asc' THEN create_date END), (CASE WHEN @orderBy = 'create_date,desc' THEN create_date END) DESC, (CASE WHEN @orderBy = 'update_date,asc' THEN update_date END), (CASE WHEN @orderBy = 'update_date,desc' THEN update_date END) DESC LIMIT ?,?; ` rows, err := d.Query( query, uid, srt, pg*lim, lim, ) if err != nil { return nil, err } defer rows.Close() result := make([]Inventory, 0) for rows.Next() { var inv Inventory if err := rows.Scan( &inv.Id, &inv.UserId, &inv.Type, &inv.Name, &inv.Description, &inv.Visible, &inv.CreateDate, &inv.UpdateDate); err != nil { return result, err } result = append(result, inv) } if err = rows.Err(); err != nil { return result, err } return result, nil }</code>
Dengan mengubah suai konfigurasi DSN dan menukar pangkalan data dan jadual kepada penyusunan yang sesuai, pengguna boleh berjaya melaksanakan pertanyaan yang dipersoalkan sambil mengelakkan ralat sintaks.
Atas ialah kandungan terperinci Bolehkah Anda Melaksanakan Pertanyaan MySQL dengan Pembolehubah SET apabila Menggunakan Kaedah Pertanyaan() Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!