一、Go代码
以下代码从数据取出一条记录,以json格式返回
package main
import (
"encoding/json"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
)
var db *sqlx.DB
var err error
var str string
type user struct {
Id int `db:"id"`
Name string `db:"nick_name"`
Rregister_day string `db:"register_day"`
}
// 查询单条数据示例
func queryRowDemo() {
sqlStr := "select id,nick_name,register_day from `user` limit 1"
var u user
db.Get(&u, sqlStr)
data, _ := json.Marshal(u)
str = string(data)
}
func main() {
dsn := "root:root@tcp(127.0.0.1:3306)/test"
// 也可以使用MustConnect连接不成功就panic
db, err = sqlx.Connect("mysql", dsn)
if err != nil {
fmt.Printf("connect DB failed, err:%v\n", err)
return
}
queryRowDemo()
fmt.Println(str)
}
该代码执行的结果如下
$ ./xiaoji.exe
{"Id":200644,"Name":"主角jha252f","Rregister_day":"2022-08-18"}
完成以上代码后执行go build
编译成可执行文件(由于我的环境是在windows下编译的文件是以.exe后缀结尾)
,然后将编译完成的文件移动php项目目录
二、PHP执行GO文件
exec('xiaoji.exe',$array);
var_dump($array);
执行代码
$ php index.php
array(2) {
[0]=>string(65) "{"Id":200644,"Name":"主角jha252f","Rregister_day":"2022-08-18"}"
}
拓展
exec()函数是用来执行一个外部程序。
PHP中提供了几个调用linux命令的函数,exec、system、passthru;
exec()函数是被禁用的,要使用这个函数必须先开启。首先是 要关掉 安全模式 safe_mode = off。然后在看看 禁用函数列表
disable_functions = proc_open, popen, exec, system, shell_exec, passthru
这里要把 exec 去掉,重启 apache 就OK了