php连接并简单操作数据库(2
对执行sql语句发生错误的处理写sql语句时,如何写需要转义的特殊字符(单引号、双引号等)一次性执行多条sql语句课堂笔记好好学习,天天向上!
对执行sql语句发生错误的处理
使用以下两个函数即可查看错误信息
$query ='select cuowu from student';
$result =mysqli_real_query($link,$query);
if($result ==false){
var_dump(mysqli_errno($link));
var_dump(mysqli_error($link));
}
运行结果:
写sql语句时,如何写需要转义的特殊字符(单引号、双引号等)
首先看php中字符串的四种定义方式https://www.php.net/manual/zh/language.types.string.php 代码示例:
$str=<<<STRING
select * from student where name='张''''""""//\\三'
STRING;
echo $str;
echo '<hr>';
$query= mysqli_real_escape_string($link,$str);
echo $query;
运行结果:
这样就省的我们在写sql语句时,一个手动添加转义字符了(php天下第一)
一次性执行多条sql语句
一次性执行多条SQL语句,多个SQL语句用分号隔开 。函数的声明如下
bool mysqli_multi_query
( mysqli
$link , string
$query );
会用就行,知识点太多详看百度。(以后用到回来补知识点)
课堂笔记
1.建立、关闭与MySQL服务器的连接
1)连接指定的mysql服务器
$mysqli_connect=@
mysqli_connect($host, $user, $password,$database,$port);
2)连接错误时的提示
int mysqli_connect_errno
();
string mysqli_connect_error
();
3)设置默认字符编码
bool mysqli_set_charset
( mysqli
$link , string
$charset )
4)选择特定的数据库
bool mysqli_select_db
( mysqli
$link , string
$dbname);
5)关闭与mysql服务器的连接
bool mysqli_close
( mysqli
$link );
2.执
SQL语句
1)对数据库执行一条
SQL语句
1>mixed mysqli_query
( mysqli
$link , string
$query [, int
$resultmode = MYSQLI_STORE_RESULT ] );
①对于insert,update,delete等不会返回数据的
SQL语句,在执行没有错误时将返回
true。
②对于返回数据的
SQL语句执行成功的时候会返回结果集对象可以使用操作结果集对象的函数来从中获取数据
③
MYSQLI_STORE_RESULT和
MYSQLI_USE_RESULT决定了mysqli client和server之间取结果集的方式。
MYSQLI_STORE_RESULT:执行
SQL时提取结果集返回给client,并分配内存,存储到用户程序空间中
,之后
mysqli_fetch_array()
相当于是从本地取数据;而
MYSQLI_USE_RESULT方式下,
mysqli_fetch_array()每次都要向server请求结果行。
MYSQLI_USE_RESULT:执行
SQL的时候并没有从server将结果集取回
2>bool mysqli_real_query
( mysqli
$link , string
$query );
也可以使用本函数对数据库执行一条
SQL语句,返回结果为布尔值,不返回结果集。
如果想获取结果集可以使用
mysqli_store_result()获取结果集对象
.
3>如果在执行
SQL语句的时候发生错误,以上两个函数都将返回
false,并且可以使用以下函数处理错误原因
int mysqli_errno
( mysqli
$link );
string mysqli_error
( mysqli
$link );
2)操作结果集对象的函数
1>从结果集对象中解析数据的常见函数
①以索引数组的方式获取一条记录的数据
mixed mysqli_fetch_row
( mysqli_result
$result );
重复使用以获取下一条记录的数据
②以关联数组的方式获取一条记录的数据
array mysqli_fetch_assoc
( mysqli_result
$result );
重复使用以获取下一条记录的数据
③以索引数组或关联数组的方式获取一条记录的数据
mixed mysqli_fetch_array
( mysqli_result
$result [, int
$resulttype = MYSQLI_BOTH ] );
重复使用以获取下一条记录的数据
④以索引数组或关联数组的方式获取全部记录的数据
mixed mysqli_fetch_all
( mysqli_result
$result [, int
$resulttype = MYSQLI_NUM ] );
⑤返回结果集中的下一个字段信息
object mysqli_fetch_field
( mysqli_result
$result );
⑥返回一个代表结果集字段的对象数组
array mysqli_fetch_fields
( mysqli_result
$result );
⑦获取结果中行的数量
int mysqli_num_rows
( mysqli_result
$result );
注意:如果使用
MYSQLI_USE_RESULT模式则必须在获取完所有的结果才可使用该函数。
2>释放与一个结果集相关的内存
返回的结果集在数据量很大的时候需要很多的内存支持,所以在操作完结果集的时候有必要立刻释放与一个结果集相关的内
存, 释放之后,结果集就不可用了
void mysqli_free_result
( mysqli_result
$result );
3)其他常用函数
1>获取前一个Mysql操作的受影响行数
int mysqli_affected_rows
( mysqli
$link );
2>返回最后一次操作自动生成并使用的id
mixed mysqli_insert_id
( mysqli
$link );
3>转义用于
SQL语句中的特殊字符防止
SQL语句出错
string mysqli_real_escape_string
( mysqli
$link , string
$escapestr );
4)一次性执行多条
SQL语句
,多个
SQL语句用分号隔开
bool mysqli_multi_query
( mysqli
$link , string
$query );
好好学习,天天向上!