0
を使って移動して新しいMySQLデータベースの作成:私はこのコードを変更し、DB名を連結した場合私は新しいMySQLデータベースを作成しようとしていますプリペアドクエリ
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
:
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:%[email protected](%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)
}
}
をしかし、このコードは、エラーを返しますクエリに:
prepared, err := db.Prepare("CREATE DATABASE IF NOT EXISTS " + DB_NAME)
handleError(err)
_, err = prepared.Exec()
私は潜在的なSQLインジェクションを持っていないでしょう。
DBの作成をどのように準備して実行できますか?
ありがとうございました。この問題を解決するための唯一の方法は連結のようですが、私の場合は環境変数からDB_NAMEを受け取り、連結したい場合は検証コードを書く必要があります – volodymyrkoval
@volodymyrkoval:正しいです。この場合、独自の検証を提供する必要があります。 – Flimzy