我想在使用Golang sqlx庫中創建一個準備語句。我想有表名是bindVarPostgres sqlx準備語句與表名bindvar
stmt, err := stmtTx.Preparex("SELECT * FROM $1 WHERE question_id=$2;")
但是這給了我周圍的/$1/
語法錯誤。我可以不使用表名的綁定變量?
我想在使用Golang sqlx庫中創建一個準備語句。我想有表名是bindVarPostgres sqlx準備語句與表名bindvar
stmt, err := stmtTx.Preparex("SELECT * FROM $1 WHERE question_id=$2;")
但是這給了我周圍的/$1/
語法錯誤。我可以不使用表名的綁定變量?
我可以不使用綁定var的表名?
參數可以僅被用作數據值,而不是作爲標識符。 因此,例如,這是合理的:
INSERT INTO mytable VALUES ($1);
,但是這是行不通的:
INSERT INTO $1 VALUES (42);
但是你可以使用fmt.Sprintf
表名,如果你想,但離開了$ 1,$ 2。 ..爲數據值。
一個通用的解決方案請參見本頁面:
但不'fmt.Sprintf'瞭解標識的引用規則?數據庫接口中應該有一個專門用於正確引用標識符的函數。 – 2014-09-02 20:05:10
@ muistooshort不,只是表名。 – 2014-09-02 20:05:42
我想你誤會了。標識符(如表名和列名)具有與字符串不同的引用和轉義規則。在數據庫接口中應該有一些函數知道如何正確引用標識符。 – 2014-09-02 20:17:44