2017-03-17 37 views
-1

如何在Go语言中设置mysql限制?我尝试到PHP它是工作,但在Go语言,它表明<nil>值不知道如何固定如何设置限制或查询Go语言Mysql?

php:--- $sql = "SELECT My_Data FROM page_data"; or $sql = "SELECT My_Data FROM page_data limit 0,10"; 

Go :- SHOW <nil> >>> 
    myquery, err := db.Prepare("SELECT pages_old FROM app_library") 
    fmt.Println("Data---", myquery) 

当我打以下命令: - 问:=“SELECT data FROM page_data

rows, err := db.Query(q) 
if err != nil { 
    fmt.Println(err) 
} 

defer rows.Close() 

for rows.Next() { 
    var data string // same database type 
    if err := rows.Scan(&data); err != nil { 
     log.Fatal(err) 
    } 
    fmt.Println(data) 
} 

然后得到下面的错误:

Error: error :-- commands out of sync. Did you run multiple statements at once? panic: runtime error: invalid memory address or nil pointer dereference panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x10bee7a]

+1

请告诉我的错误? –

+0

如何为mysql查询设置go语言的限制 –

回答

1

Prepare用于创建针对L一份准备好的声明查询或执行。如果要执行返回行使用Query

完整的例子查询

package main 

import (
    "database/sql" 
    "fmt" 
    "log" 

    _ "github.com/go-sql-driver/mysql" 
) 

const (
    dbUser  = "" 
    dbPassword = "" 
    dbName  = "" 
) 

func main() { 
    db, err := sql.Open("mysql", dbUser+":"+dbPassword+"@/"+dbName+"?charset=utf8") 
    if err != nil { 
     log.Fatal(err) 
    } 

    q := "SELECT `data` FROM `page_data`" 

    rows, err := db.Query(q) 
    if err != nil { 
     fmt.Println(err) 
    } 

    defer rows.Close() 

    for rows.Next() { 
     var data string // same database type 
     if err := rows.Scan(&data); err != nil { 
      log.Fatal(err) 
     } 
     fmt.Println(data) 
    } 
} 

例如,它已被编辑

+0

试试看,但得到错误: - 命令不同步。你是否一次运行多条语句? 恐慌:运行时错误:无效的内存地址或零指针引用 \t恐慌:运行时错误:无效的内存地址或零指针引用 [信号SIGSEGV:分割违反代码=为0x1 ADDR =为0x0 PC = 0x10bee7a] –

+0

请,添加额外的细节。 –

+0

此命令rows0,err:= db.Query(“SELECT app_id FROM app_library where app_id ='febae795'”)>> fmt.Println(rows0)然后它显示我 go语言中的值..如果我将运行相同的命令与PHP然后它工作 –