簡體   English   中英

使用准備好的查詢使用Go創建新的MySQL數據庫

[英]Creating new MySQL database with Go using prepared query

我正在嘗試創建新的MySQL數據庫:

package main

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

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

func createDBIfNotExists() {
    const (
        DB_NAME = "new_db"
        DB_USER = "root"
        DB_PASS = "777"
        DB_HOST = "localhost"
        DB_PORT = "3306"
    )

    var dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/", DB_USER, DB_PASS, DB_HOST, DB_PORT)

    db, err := sql.Open("mysql", dbUrl)
    defer db.Close()
    handleError(err)

    prepared, err := db.Prepare("CREATE DATABASE IF NOT EXISTS ?")
    handleError(err)

    _, err = prepared.Exec(DB_NAME)
    handleError(err)
}

func main() {
    createDBIfNotExists()
}

func handleError(err error) {
    if err != nil {
        log.Fatal(err)
    }
}

但是此代碼返回錯誤:

2017/10/13 12:46:16 Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1

如果我更改此代碼並將數據庫名稱連接起來進行查詢:

prepared, err := db.Prepare("CREATE DATABASE IF NOT EXISTS " + DB_NAME)
handleError(err)
_, err = prepared.Exec()

可以,但是我不會有潛在的SQL注入。

我如何准備和執行數據庫創建?

你不能 准備好的語句占位符綁定參數值 ,而不綁定標識符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM