mysqli预处理prepare的相关函数预处理语句对于防⽌ MySQL 注⼊是⾮常有⽤的。
PHP官⽅代码⽰例:
⾯向对象风格
1 <?php
2$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
3
4/* check connection */
5if (mysqli_connect_errno()) {
6printf("Connect failed: %s\n", mysqli_connect_error());
7exit();
8 }
9
10$city = "Amersfoort";
11
12/* create a prepared statement */
13if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
14
15/* bind parameters for markers */
16$stmt->bind_param("s", $city);
17
18/* execute query */
19$stmt->execute();
20
21/* bind result variables */
22$stmt->bind_result($district);
23
24/* fetch value */
25$stmt->fetch();
26
27printf("%s is in district %s\n", $city, $district);
28
29/* close statement */
30$stmt->close();
31 }
32
33/* close connection */
34$mysqli->close();
35 ?>
⾯向过程风格
1 <?php
2$link = mysqli_connect("localhost", "my_user", "my_password", "world");
3
4/* check connection */
5if (mysqli_connect_errno()) {
6printf("Connect failed: %s\n", mysqli_connect_error());
7exit();
8 }
9
10$city = "Amersfoort";
11
12/* create a prepared statement */
13if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?")) {
14
15/* bind parameters for markers */
16mysqli_stmt_bind_param($stmt, "s", $city);
17
18/* execute query */
19mysqli_stmt_execute($stmt);
20
21/* bind result variables */
22mysqli_stmt_bind_result($stmt, $district);
23
24/* fetch value */
25mysqli_stmt_fetch($stmt);
26
27printf("%s is in district %s\n", $city, $district);
28
29/* close statement */
30mysqli_stmt_close($stmt);
31 }
32
33/* close connection */
34mysqli_close($link);
35 ?>
参数有以下四种类型:
i - integer(整型)
d - double(双精度浮点型)
s - string(字符串)
b - BLOB(binary large object:⼆进制⼤对象)
每个参数都需要指定类型。
以下为⼀些mysqli常⽤函数。
mysqli_fetch_field_direct() 以对象返回结果集中单字段的元数据。
mysqli_fetch_field() 以对象返回结果集中的下⼀个字段。
mysqli_fetch_fields() 返回代表结果集中字段的对象数组。
mysqli_fetch_lengths() 返回结果集中当前⾏的列长度。
mysqli_fetch_object() 以对象返回结果集的当前⾏。
mysqli_fetch_row() 从结果集中抓取⼀⾏并以枚举数组的形式返回它。
mysqli_field_count() 返回最近⼀次查询获取到的列的数⽬。
mysqli_field_seek() 设置字段指针到特定的字段开始位置。
mysqli_field_tell() 返回字段指针的位置。
mysqli_free_result() 释放与某个结果集相关的内存。
mysqli_get_charset() 返回字符集对象。
mysqli_get_client_info() 返回字符串类型的 Mysql 客户端版本信息。
mysql 字符串转数组mysqli_get_client_stats() 返回每个客户端进程的统计信息。
mysqli_get_client_version() 返回整型的 Mysql 客户端版本信息。
mysqli_get_connection_stats() 返回客户端连接的统计信息。
mysqli_get_host_info() 返回 MySQL 服务器主机名和连接类型。
mysqli_get_proto_info() 返回 MySQL 协议版本。
mysqli_get_server_info() 返回 MySQL 服务器版本。
mysqli_get_server_version() 返回整型的 MySQL 服务器版本信息。
mysqli_info() 返回最近⼀次执⾏的查询的检索信息。
mysqli_init() 初始化 mysqli 并且返回⼀个由 mysqli_real_connect() 使⽤的资源类型。
mysqli_insert_id() 返回最后⼀次查询中使⽤的⾃动⽣成 id。
mysql_kill() 请求服务器终结某个 MySQL 线程。
mysqli_more_results() 检查⼀个多语句查询是否还有其他查询结果集。
mysqli_multi_query() 在数据库上执⾏⼀个或多个查询。
mysqli_next_result() 从 mysqli_multi_query() 中准备下⼀个结果集。
mysqli_num_fields() 返回结果集中的字段数。
mysqli_num_rows() 返回结果集中的⾏数。
mysqli_options() 设置选项。
mysqli_ping() Ping ⼀个服务器连接,或者如果那个连接断了尝试重连。
mysqli_prepare() 准备⼀条⽤于执⾏的 SQL 语句。
mysqli_query() 在数据库上执⾏查询。
mysqli_real_connect() 打开⼀个到 Mysql 服务端的新连接。
mysqli_real_escape_string() 转义在 SQL 语句中使⽤的字符串中的特殊字符。
mysqli_real_query() 执⾏ SQL 查询。
mysqli_reap_async_query() 返回异步查询的结果。
mysqli_refresh() 刷新表或缓存,或者重置复制服务器信息。
mysqli_rollback() 回滚当前事务。
mysqli_select_db() 改变连接的默认数据库。
mysqli_set_charset() 设置默认客户端字符集。
mysqli_set_local_infile_default() 清除⽤户为 load local infile 命令定义的处理程序。
mysqli_set_local_infile_handler() 设置 LOAD DATA LOCAL INFILE 命令执⾏的回调函数。
mysqli_sqlstate() 返回前⼀个 Mysql 操作的 SQLSTATE 错误代码。
mysqli_ssl_set() 使⽤ SSL 建⽴安装连接。
mysqli_stat() 返回当前系统状态。
mysqli_stmt_init() 初始化⼀条语句并返回⼀个由 mysqli_stmt_prepare() 使⽤的对象。
mysqli_store_result() 传输最后⼀个查询的结果集。
mysqli_thread_id() 返回当前连接的线程 ID。
mysqli_thread_safe() 返回是否设定了线程安全。
mysqli_use_result() 初始化⼀个结果集的取回。
mysqli_warning_count() 返回连接中最后⼀次查询的警告数量。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论