gpt4 book ai didi

mysql - 使用准备好的查询使用 Go 创建新的 MySQL 数据库

转载 作者:IT王子 更新时间:2023-10-29 02:32:13 25 4
gpt4 key购买 nike

我正在尝试创建新的 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 注入(inject)。

我如何准备和执行数据库的创建?

最佳答案

你不能。准备好的语句占位符绑定(bind) parameter values only , 不是 identifiers .

关于mysql - 使用准备好的查询使用 Go 创建新的 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46727326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com