英文:
Go , there is no parameter $1
问题
我正在尝试通过这种方式获取数据库的值。但是当我转到/myapps路径时,编译器抛出了一个错误。
结构:
type App struct{
Title string
Author string
Description string
}
函数:
func myappsHandler(w http.ResponseWriter, r *http.Request){
db, err := sql.Open("postgres"," user=postgres dbname=lesson4 host=localhost password=1234 sslmode=disable")
if err != nil{
log.Fatal(err)
}
rows, err := db.Query(`SELECT title, author, description FROM apps
WHERE title ILIKE $1
OR author ILIKE $1
OR description ILIKE $1`)
defer rows.Close()
if err != nil{
log.Fatal(err)
}
apps := []App{}
for rows.Next(){
b := App{}
err := rows.Scan(&b.Title, &b.Author, &b.Description)
if err != nil{
log.Fatal(err)
}
apps = append(apps, b)
}
render(w, "myapps.html", map[string]interface{}{"apps" : apps})
db.Close()
}
我在HTML中这样读取:
{{ range .apps}}
<tr>
<td>{{ .Title }}</td>
<td>{{ .Author }}</td>
<td>{{ .Description }}</td>
<td> <form action="/delete">
<p class="navbar-form navbar-right"><button type="submit" class="btn btn-danger">Borrar</button> </p>
</form></td>
</tr>
{{ end }}
错误是:没有参数$1。
提前谢谢。
英文:
Im trying to get the values of the database by this way. But the compiler throw me an error when I go to /myapps direction.
Structure:
type App struct{
Title string
Author string
Description string
}
Function:
func myappsHandler(w http.ResponseWriter, r *http.Request){
db, err := sql.Open("postgres"," user=postgres dbname=lesson4 host=localhost password=1234 sslmode=disable")
if err != nil{
log.Fatal(err)
}
rows, err := db.Query(`SELECT title, author, description FROM apps
WHERE title ILIKE $1
OR author ILIKE $1
OR description ILIKE $1`)
defer rows.Close()
if err != nil{
log.Fatal(err)
}
apps := []App{}
for rows.Next(){
b := App{}
err := rows.Scan(&b.Title, &b.Author, &b.Description)
if err != nil{
log.Fatal(err)
}
apps = append(apps, b)
}
render(w, "myapps.html", map[string]interface{}{"apps" : apps})
db.Close()
}
I read like this in the HTML:
{{ range .apps}}
<tr>
<td>{{ .Title }}</td>
<td>{{ .Author }}</td>
<td>{{ .Description }}</td>
<td> <form action="/delete">
<p class="navbar-form navbar-right"><button type="submit" class="btn btn-danger">Borrar</button> </p>
</form></td>
</tr>
{{ end }}
The error is : there is no parameter $1.
Thank you in advance.
答案1
得分: 7
你需要传递以下参数:
title := '标题'
author := '约翰'
description := '一本书'
rows, err := db.Query(`
SELECT title, author, description
FROM apps
WHERE title ILIKE $1
OR author ILIKE $2
OR description ILIKE $3`
, title, author, description
)
使用 %
字符表示“匹配任何内容”
http://golang.org/pkg/database/sql/#DB.Query
请参考上述链接了解更多关于 %
字符的用法。
http://www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-LIKE
英文:
You need to pass the parameters
title := '%the title%'
author := '%John%'
description := '%a book%'
rows, err := db.Query(`
SELECT title, author, description
FROM apps
WHERE title ILIKE $1
OR author ILIKE $2
OR description ILIKE $3`
, title, author, description
)
http://golang.org/pkg/database/sql/#DB.Query
Use the %
character to mean match anything
http://www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-LIKE
答案2
得分: 0
我能够解决我的问题,不管怎样,还是谢谢你的答案和帮助
我将发布工作代码:
结构:
type App struct{
Title string
Author string
Description string
}
应用程序处理程序:
db := SetupDB()
rows, err := db.Query(`SELECT title, author, description FROM apps`)
PanicIf(err)
defer rows.Close()
apps := []App{}
for rows.Next(){
b := App{}
err := rows.Scan(&b.Title, &b.Author, &b.Description)
PanicIf(err)
apps = append(apps, b)
}
render(w, "myapps.html", map[string]interface{}{"apps" : apps})
db.Close()
以及HTML代码:
{{ range .apps}}
<tr>
<td>{{ .Title }}</td>
<td>{{ .Author }}</td>
<td>{{ .Description }}</td>
<td> <form action="/delete">
<p class="navbar-form navbar-right"><button type="submit" class="btn btn-danger">Borrar</button> </p>
</form></td>
</tr>
{{ end }}
英文:
I was able to resolve my issue, thank you anyways for your answers and help
I will post the working code:
Structure:
type App struct{
Title string
Author string
Description string
}
Handler of Apps:
db := SetupDB()
rows, err := db.Query(`SELECT title, author, description FROM apps`)
PanicIf(err)
defer rows.Close()
apps := []App{}
for rows.Next(){
b := App{}
err := rows.Scan(&b.Title, &b.Author, &b.Description)
PanicIf(err)
apps = append(apps, b)
}
render(w, "myapps.html", map[string]interface{}{"apps" : apps})
db.Close()
And the html:
{{ range .apps}}
<tr>
<td>{{ .Title }}</td>
<td>{{ .Author }}</td>
<td>{{ .Description }}</td>
<td> <form action="/delete">
<p class="navbar-form navbar-right"><button type="submit" class="btn btn-danger">Borrar</button> </p>
</form></td>
</tr>
{{ end }}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论