概述
代码
stmt, err := db.Prepare(“alter table user add column birth varchar”)
这是在user里面创建一个birth的字段
我能成功运行的
但是我想搞个自定义的字段
代码
stmt, err := db.Prepare(“alter table user add column birth=? varchar”)
if err != nil {
log.Fatal(err)
}
res, err := stmt.Exec(user.Biaotou)
就会报错
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 ‘=? vaechar’ at line 1
英文看的懂 他说语法问题大概
那么==!
正确的语法是?
补1
说的太不具体了
我是要做一个用户管理系统
前端要求自定义用户信息(详细管理之类的
但是
联系到后端golang的时候
我却不会自定义字段
mysql的添加字段我会
试了很久我还是不会
从前端那里接收字段
后端操作数据库添加字段
可以肯定连接是没问题的
难道golang不能往数据库添加从前端接收的字段?
补2
感谢2楼
确实可以增加自定义的表头
但是想在里面直接加数据我就不行了
按二楼那样改成这样
res, err := db.Exec(fmt.Sprintf(“alter table user add column %s VARCHAR(128)”, user.Biaotou))
if err != nil {
log.Fatal(err)
}
stmt, err := db.Exec(fmt.Sprintf(“UPDATE user SET %s=%d WHERE username=%f”, user.Biaotou, user.Data, user.Username))
if err != nil {
log.Fatal(err)
}
但是依然报错啊
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 ‘%!d(string=2) WHERE username=%!f(string=2)’ at line 1
补3
但是update用db.prepare我要用%s代user.biaotou
这样就不符合db.prepare的格式了
新手基本就知道db.prepare db.Query() stmt.Exec()…..
格式化信息?
试了下
stmt, err := db.Exec(fmt.Sprintf(“UPDATE user SET %s=? WHERE username=?”, user.Biaotou, user.Data, user.Username))
还是不行….
或者
fmt.Sprintf(“UPDATE user SET %s=? WHERE username=?”, user.Biaotou)
stmt, err := fmt.Exec(user.Data, user.Username)
感觉第二个比较接近正确的
但是fmt 和 stmt那里绝对是错了
补4
我自己解决了
果然是你说的那样
但是
我把他分成两个函数
一个实现了增加表头
一个实现了往增加表头里面增加数据
能不能把他们放在同一个函数里面?
但是放在同一个函数里面
stmt res db 不够用….
新手不懂他们的区别
求助
最后
以上就是开朗面包为你收集整理的golang mysql 自动建表_如何用golang在mysql的表格创建自定义的字段的全部内容,希望文章能够帮你解决golang mysql 自动建表_如何用golang在mysql的表格创建自定义的字段所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复