2017-03-17 125 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然後它工作 –