我有一个这样的模型:
type Course struct {
Name string `db:"course_name"`
}
type Group struct {
Course *Course
}
type Groups []Group
当我尝试使用如下查询进行sqlx.Select for Groups时:
SELECT c.name as course_name FROM courses as c;
我得到了
* main.Groups
中缺少目的地名称course_name
错误。
此代码有什么问题?
答案 0 :(得分:0)
当您选择多行并且想要将结果扫描到切片时需要使用sqlx.Get
,就像查询一样,否则请使用Group
作为单行。< / p>
此外,您无法直接扫描Course
结构,因为它的所有字段都没有标记(与Course
结构不同),course := Course{}
courses := []Course{}
db.Get(&course, "SELECT name AS course_name FROM courses LIMIT 1")
db.Select(&courses, "SELECT name AS course_name FROM courses")
字段不是&# 39; t embedded。
尝试:
<?php include("header.php");
include("classes/db.php");
session_start();
$username="";
if(isset($_GET['username']))
{
$user=$_GET['username'];
if("SELECT user_name FROM user_reg WHERE user_name='$user'")
{
$username="SELECT user_name FROM user_reg WHERE user_name='$user'";
$run_username=mysqli_query($con,$username);
$row=mysqli_fetch_array($run_username);
$username=$row['user_name'];
}
else
{
die("User does nto exist");
}
}
?>
答案 1 :(得分:0)
我将Course *Course
更改为Course Course
- 没有效果。
当我像这样嵌入它时:
type Group struct {
Course
}
它有效。
这也是有效的:
type Group struct {
*Course
}
看起来sqlx除了嵌入字段之外什么都不懂。
答案 2 :(得分:0)
好的,所以当你使用带有Sqlx的嵌入式结构时,大小写很重要,至少在我的情况下是这样。
您需要在sql中引用嵌入式结构,如下所示:
select name as "course.name" from courses...
请注意course
是小写的,命名涉及表和列之间的点/句点。
然后您的Get
或Select
应该可以正常使用。