使用Golang将JavaScript变量插入MySQL的方法
使用Golang将JavaScript变量插入MySQL的方法 我有一个名为x的JavaScript变量,想要将这个x变量的值使用Golang插入到MySQL中。当我运行以下代码时,显示x未定义的错误。如何将JavaScript变量插入MySQL?
package main
import (
"database/sql"
"fmt"
"net/http"
_ "github.com/go-sql-driver/mysql"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, `<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<script>
var x=5;
</script>
</body>
</html>`)
db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test_db")
defer db.Close()
if err != nil {
panic(err.Error())
}
insForm, err := db.Prepare("INSERT INTO number(number_position) VALUES(?)")
if err != nil {
panic(err.Error())
}
insForm.Exec(x)
})
http.ListenAndServe(":8080", nil)
}
更多关于使用Golang将JavaScript变量插入MySQL的方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html
我不认为这回答了问题。但当然,问题本身表述得不够清晰。
更多关于使用Golang将JavaScript变量插入MySQL的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
JavaScript变量(var x=5;)在文本块中对Go语言而言并不是变量。你无法从Go代码中访问它。
你想实现什么功能?x 的值是否始终为 5?为什么?
使用 html/template 包。
哦,你说得对,我以为他想生成HTML/Javascript 😄
你必须将浏览器中的内容通过表单提交或AJAX查询发送到Go的某个端点。
使用Go构建Web服务器 - The New Stack

Go(Golang.org)是一种系统编程语言,在其标准库中提供了标准的HTTP协议支持,这使得开发人员能够轻松构建并快速启动Web服务器。同时,Go为开发人员提供了很多…
这是客户端与服务器的通信,你不能在一个地方完成所有操作。
问题在于你的代码试图在Go服务器端直接访问客户端JavaScript变量x,这是不可能的。Go代码运行在服务器上,而JavaScript变量存在于客户端的浏览器中。你需要通过HTTP请求将JavaScript变量的值发送到Go服务器。
以下是修改后的解决方案:
package main
import (
"database/sql"
"fmt"
"net/http"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test_db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 创建表(如果不存在)
_, err = db.Exec(`CREATE TABLE IF NOT EXISTS number (
id INT AUTO_INCREMENT PRIMARY KEY,
number_position INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)`)
if err != nil {
log.Fatal(err)
}
// 处理插入请求的端点
http.HandleFunc("/insert", func(w http.ResponseWriter, r *http.Request) {
if r.Method != "POST" {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
// 从请求中获取number参数
number := r.FormValue("number")
if number == "" {
http.Error(w, "Number parameter is required", http.StatusBadRequest)
return
}
// 插入数据库
insForm, err := db.Prepare("INSERT INTO number(number_position) VALUES(?)")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer insForm.Close()
_, err = insForm.Exec(number)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
fmt.Fprintf(w, "Successfully inserted number: %s", number)
})
// 提供HTML页面的端点
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, `<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Insert Number to MySQL</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h1>Insert Number to MySQL</h1>
<script>
var x = 5;
// 使用fetch API发送数据到服务器
function insertNumber() {
fetch('/insert', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: 'number=' + x
})
.then(response => response.text())
.then(data => {
console.log('Success:', data);
alert('Number inserted successfully: ' + data);
})
.catch((error) => {
console.error('Error:', error);
alert('Error inserting number');
});
}
// 页面加载后自动插入,或者可以通过按钮触发
window.onload = function() {
insertNumber();
};
</script>
<button onclick="insertNumber()">Insert Number</button>
</body>
</html>`)
})
log.Println("Server starting on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
或者使用XMLHttpRequest的替代方案:
// 在HTML的JavaScript部分可以使用XMLHttpRequest
fmt.Fprintf(w, `<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Insert Number</title>
</head>
<body>
<script>
var x = 5;
function insertNumber() {
var xhr = new XMLHttpRequest();
xhr.open('POST', '/insert', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
console.log('Success:', xhr.responseText);
alert('Inserted: ' + xhr.responseText);
} else {
console.error('Error:', xhr.statusText);
alert('Error inserting number');
}
}
};
xhr.send('number=' + x);
}
// 调用插入函数
insertNumber();
</script>
</body>
</html>`)
关键点:
- 创建单独的
/insert端点处理数据插入 - 使用JavaScript的fetch或XMLHttpRequest将客户端数据发送到服务器
- 在Go端使用
r.FormValue("number")获取发送的数据 - 使用预处理语句防止SQL注入
这样就能正确地将JavaScript变量x的值插入到MySQL数据库中了。

