mysql预处理速度对比_mysql直接执行和预处理执行的效率比较

{

if

(mysql_stmt_prepare(stmt,

"

INSERT test(col1,col2,col3,col4) values(?,?,?,?)

"

, strlen(

"

INSERT test(col1,col2,col3,col4) values(?,?,?,?)

"

)))

{

fprintf(stderr,

"

mysql_stmt_prepare(), insert failed\r\n

"

);

fprintf(stderr,

"

%s\r\n

"

, mysql_stmt_error(stmt));

return

false

;

}

//

测试mysql_stmt_field_count()作用

//

printf("mysql_stmt_field_count return value[%d]\r\n",mysql_stmt_field_count(stmt));

MYSQL_BIND    bind[

4

];

unsigned

long

length[

4

];

my_bool       is_null[

4

];

memset(bind,

0

,

sizeof

(bind));

memset(length,

0

,

sizeof

(length));

memset(is_null,

0

,

sizeof

(is_null));

char

varchar_var[STRING_SIZE]

=

"

hello yg

"

;

char

char_var[STRING_SIZE]

=

"

hello dl

"

;

struct

st_stud st;

st.id

=

1

;

strncpy(st.name,

"

shine.yang

"

,

16

);

st.score

=

10.0f

;

time_t cur_t

=

time(NULL);

struct

tm cur_tm;

localtime_r(

&

cur_t,

&

cur_tm);

MYSQL_TIME    ts;

ts.year

=

cur_tm.tm_year

+

1900

, ts.month

=

cur_tm.tm_mon

+

1

, ts.day

=

cur_tm.tm_mday,ts.hour

=

cur_tm.tm_hour, ts.minute

=

cur_tm.tm_min, ts.second

=

cur_tm.tm_sec;

bind[

0

].buffer_type

=

MYSQL_TYPE_STRING;

bind[

0

].buffer

=

varchar_var;

bind[

0

].buffer_length

=

STRING_SIZE;

length[

0

]

=

strlen(varchar_var);

bind[

0

].length

=

&

length[

0

];

bind[

0

].is_null

=

&

is_null[

0

];

bind[

1

].buffer_type

=

MYSQL_TYPE_STRING;

bind[

1

].buffer

=

char_var;

bind[

1

].buffer_length

=

STRING_SIZE;

length[

1

]

=

strlen(char_var);

bind[

1

].length

=

&

length[

1

];

bind[

1

].is_null

=

&

is_null[

1

];

bind[

2

].buffer_type

=

MYSQL_TYPE_BLOB;

bind[

2

].buffer

=

(

char

*

)

&

st;

bind[

2

].buffer_length

=

sizeof

(st);

length[

2

]

=

sizeof

(st);

bind[

2

].length

=

&

length[

2

];

bind[

2

].is_null

=

&

is_null[

2

];

bind[

3

].buffer_type

=

MYSQL_TYPE_TIMESTAMP;

bind[

3

].buffer

=

(

char

*

)

&

ts;

bind[

3

].buffer_length

=

sizeof

(ts);

length[

3

]

=

sizeof

(ts);

bind[

3

].length

=

&

length[

3

];

bind[

3

].is_null

=

&

is_null[

3

];

dword time1

=

get_time();

for

(

int

i

=

0

; i

<

INSERT_ITEM_CNT;

++

i )

{

if

( mysql_stmt_bind_param(stmt,bind) )

{

fprintf(stderr,

"

mysql_stmt_bind_param failed,err = %s\r\n

"

,mysql_stmt_error(stmt));

return

false

;

}

if

( mysql_stmt_execute(stmt) )

{

fprintf(stderr,

"

mysql_stmt_excute failed,err = %s\r\n

"

,mysql_stmt_error(stmt));

return

false

;

}

//

printf("Total effect rows [%d]\r\n",(int)mysql_stmt_affected_rows(stmt));

}

dword time2

=

get_time();

fprintf(stdout,

"

stmt insert %d items,during time[%d]\r\n

"

,INSERT_ITEM_CNT,time2

-

time1);

return

true

;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
随着互联网技术的发展和需求的多样化,前后端分离的概念也越来越深入人心,并且JS框架层出不穷,这个趋势使得前端技术得到了空前的提升,而后端也在不断地发展和完善。 在实现前端和后端 html css js php mysql预处理,并且还要有增添改查功能这个问题中,前端和后端要互相合作和沟通,以达到实现具有良好体验并且充分利用后端功能的网站的目的。 首先,前端需要按照设计师给出的设计稿进行页面的布局和实现,使用html和css来展现出各个页面的样式,并且利用JS对一些页面的交互进行实现。在前端进行开发时,需要注意浏览器的兼容性问题,对于兼容性低的一些浏览器,需要进行特殊的处理。 同时,前端还需要利用Ajax技术来实现与后端的交互,将用户输入的信息发送到后端进行处理。在这个过程中,前端需要按照后端的接口规范来进行开发,并且需要注意数据的安全性,对于一些用户敏感的信息需要进行加密处理。 后端的实现主要以PHP语言为主,利用MVC框架来实现业务逻辑的处理和数据库访问的操作。在后端开发中,需要注意防止SQL注入和XSS攻击等安全问题,并且需要进行异常处理和日志记录。 最后,需要实现的增添改查功能主要是指对数据的操作,对于这些操作需要切记进行事务的控制,以防止数据不一致的问题。 综上所述,实现前端和后端 html css js php mysql预处理,还要有增添改查功能,需要前后端互相配合,同时需要注意数据的安全性和事务的控制。这样才能够实现一个既具有良好体验又充分利用后端功能的网站。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_39915078

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值