gpt4 book ai didi

mysql - 使用 Erlang Mysql 驱动程序(从/插入)表的正确方法

转载 作者:行者123 更新时间:2023-11-28 23:31:15 25 4
gpt4 key购买 nike

我正在尝试获取 erlang-mysql-driver工作,我设法设置它并进行查询,但有两件事我不能做。( https://code.google.com/archive/p/erlang-mysql-driver/issues )

(顺便说一句,我是 Erlang 的新手)

所以这是我的连接代码MySQL .

<erl>
out(Arg) ->
mysql:start_link(p1, "127.0.0.1", "root", "azzkikr", "MyDB"),
{data, Result} = mysql:fetch(p1, "SELECT * FROM messages").
</erl>

1。我无法从表中获取数据。

mysql.erl不包含有关如何获取表数据的任何具体信息,但这是我能做的最远的事情。

        {A,B} = mysql:get_result_rows(Result),
B.

结果是这样的:

ERROR erlang code threw an uncaught exception:
File: /Users/{username}/Sites/Yaws/index.yaws:1
Class: error
Exception: {badmatch,[[4,0,<<"This is done baby!">>,19238],
[5,0,<<"Success">>,19238],
[6,0,<<"Hello">>,19238]]}
Req: {http_request,'GET',{abs_path,"/"},{1,1}}
Stack: [{m181,out,1,
[{file,"/Users/{username}/.yaws/yaws/default/m181.erl"},
{line,18}]},
{yaws_server,deliver_dyn_part,8,
[{file,"yaws_server.erl"},{line,2818}]},
{yaws_server,aloop,4,[{file,"yaws_server.erl"},{line,1232}]},
{yaws_server,acceptor0,2,[{file,"yaws_server.erl"},{line,1068}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]

我知道我需要以某种方式获取第二个元素并使用 foreach 来获取每个数据,但字符串以不同的格式返回,例如查询字符串是 Success但返回的字符串是 <<"Success">> .

{badmatch,[[4,0,<<"This is done baby!">>,19238],
[5,0,<<"Success">>,19238],
[6,0,<<"Hello">>,19238]]}

第一个问题是:如何从表中获取数据?

2。如何使用变量向表中插入值?

我可以使用这种方法将数据插入表中:

    Msg = "Hello World",
mysql:prepare(add_message,<<"INSERT INTO messages (`message`) VALUES (?)">>),
mysql:execute(p1, add_message, [Msg]).

但是有两件事我遇到了麻烦,1. 我在没有 << 的情况下插入数据和 >>运营商,因为当我做 Msg = << ++ "Hello World" >>, erlang 抛出一个异常(我想我做错了什么),我不知道是否需要它们但是没有它们我可以将数据插入表中除了这个错误在执行后困扰我:

yaws code at /Users/{username}/Yaws/index.yaws:1 crashed or ret bad val:{updated,
{mysql_result,
[],
[],
1,
[]}}
Req: {http_request,'GET',{abs_path,"/"},{1,1}}

返回的原子是 updated当我命令插入数据时。
问题 2 是:如何以正确的方式向表中插入数据?

最佳答案

错误:

{badmatch,[[4,0,<<"This is done baby!">>,19238],
[5,0,<<"Success">>,19238],
[6,0,<<"Hello">>,19238]]}

告诉你返回值是:

[[4,0,<<"This is done baby!">>,19238],
[5,0,<<"Success">>,19238],
[6,0,<<"Hello">>,19238]]

这显然不能与 {data, Data}{A, B} 匹配。您可以通过以下方式获取数据:

<erl>
out(Arg) ->
mysql:start_link(p1, "127.0.0.1", "root", "azzkikr", "MyDB"),
{ehtml,
[{table, [{border, "1"}],
[{tr, [],
[{td, [],
case Val of
_ when is_binary(Val) -> yaws_api:htmlize(Val);
_ when is_integer(val) -> integer_to_binary(Val)
end}
|| Val <- Row
]}
|| Row <- mysql:fetch(p1, "SELECT * FROM messages")
]}
]
}.
</erl>

关于mysql - 使用 Erlang Mysql 驱动程序(从/插入)表的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com