Menyoal MySQL dengan sqlx dan sepotong nilai
Apabila menanyakan jadual pangkalan data untuk mendapatkan data berdasarkan nilai yang terkandung dalam kepingan, pengguna mungkin menghadapi ralat seperti yang ditunjukkan di bawah:
sql: converting Exec argument #0's type: unsupported type []int, a slice quotes []
Ralat ini menunjukkan bahawa pertanyaan itu mengharapkan jenis tertentu untuk parameter input, tetapi sebaliknya, ia menerima hirisan, yang bukan jenis yang disokong.
Untuk menyelesaikan isu ini, sqlx menyediakan fungsi pembantu yang mudah dipanggil In(). Fungsi ini mengambil kepingan nilai dan rentetan pertanyaan sebagai argumen dan mengembalikan pertanyaan yang diubah suai dengan ? bindvar. Pertanyaan ini kemudiannya boleh dipantulkan ke bahagian belakang pangkalan data yang sesuai menggunakan kaedah Rebind().
Berikut ialah contoh cara menggunakan In():
var qids []int // fills qids on query dynamically query, args, err := sqlx.In("SELECT * FROM quote WHERE qid IN (?)", qids) if err != nil { log.Fatal(err) } // sqlx.In returns queries with the `?` bindvar, we can rebind it for our backend // query = database.SQL.Rebind(query) // database.SQL should be a *sqlx.DB err = database.SQL.Select("es, query, args...) if err != nil { log.Fatal(err) }
Kod di atas mendapatkan semula nilai daripada jadual 'petikan' di mana medan 'qid' sepadan dengan mana-mana nilai dalam kepingan qids.
Untuk rujukan lanjut dan contoh, lawati dokumentasi sqlx rasmi di http://jmoiron.github.io/sqlx/.
Atas ialah kandungan terperinci Bagaimana untuk Menyoal MySQL dengan sqlx Menggunakan Secebis Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!