【后端开辟】PHP mysqli操纵数据库

后端开发 后端开发 4天前 4次浏览 已收录 0个评论 扫描二维码

起步

因为mysql衔接体式格局被取销,在php7中要运用mysql_connect()还须要分外下载组件。

运用mysqli有面向历程和面向对象两种体式格局。

mysqli供应了三个类:

● mysqli 衔接相干的

● mysqli_result 处理效果集

● mysqli_stmt 预处理类

数据库衔接

<?php
$db_host = 'localhost';
$db_name = 'test';
$db_user = 'root';
$db_pwd = '';
//面向对象体式格局
$mysqli = new mysqli($db_host, $db_user, $db_pwd, $db_name);
//面向对象的昂视屏障了衔接发生的毛病,须要经由过程函数来推断
if(mysqli_connect_error()){
    echo mysqli_connect_error();
}
//设置编码
$mysqli->set_charset("utf8");//或许 $mysqli->query("set names 'utf8'")
//封闭衔接
$mysqli->close();
//面向历程体式格局的衔接体式格局
$mysqli = mysqli_connect($db_host, $db_user, $db_pwd, $db_name);
//推断是不是衔接胜利
if(!$mysqli ){
    echo mysqli_connect_error();
}
//封闭衔接
mysqli_close($mysqli);
?>

数据库查询

通用:实行sql语句都可用query(sql),实行失利会返回false,select胜利则返回效果集对象,其他返回true,只需不是false就申明sql语句实行胜利了。

<?php
//无效果集示例
$sql = "insert into table_name (`name`, `address`) values ('xiaoming', 'adddddrrreess')";
$result = $mysqli->query($sql);
//或许
$sql = "delete from table_name where name='xiaoming'";
$result = $mysqli->query($sql);
if($result === false){
    echo $mysqli->error;
    echo $mysqli->errno;
}
//影响条数
echo $mysqli->num_rows;
//插进去的id
echo $mysqli->insert_id;
$mysqli->close();

有用果集

<?php
$sql = "select * from table_name";
$result = $mysqli->query($sql);
if($result === false){//实行失利
    echo $mysqli->error;
    echo $mysqli->errno;
}
//行数
echo $result->num_rows;
//列数 字段数
echo $result->field_count;
//猎取字段信息
$field_info_arr = $result->fetch_fields();
//挪动纪录指针
//$result->data_seek(1);//0 为重置指针到肇端
//猎取数据
while($row = $result->fetch_assoc()){
    echo $row['name'];
    echo $row['address'];
}
//也可一次性猎取一切数据
//$result->data_seek(0);//假如前面有挪动指针则需重置
$data = $result->fetch_all(MYSQLI_ASSOC);
$mysqli->close();

预处理示例

预处理能有用的防备sql注入的发生,mysqli_stmt是预处理类

<?php
$sql = "insert inro table_name ('name','address') values (?,?)";
//取得预处理对象
$stmt = $mysqli->prepare($sql);
//绑定参数 第一个参数为绑定的数据类型
/*
i:integer 整型
d:double 浮点型
s:string 字符串
b:a blob packets blob数据包
*/
$name = "xiaoming";
$address = "adddressss";
$stmt->bind_param("ss", $name, $address);//绑定时运用变量绑定
//实行预处理
$stmt->execute();
/*
//可从新绑定 屡次实行
$stmt->bind_param("ss", $name, $address);
$stmt->execute();
*/
//插进去的id 屡次插进去为末了id
echo $stmt->insert_id;
//影响行数 也是末了一次实行的
echo $stmt->affected_rows;
//毛病号
echo $stmt->errno;
//毛病信息
echo $stmt->error;
//封闭
$stmt->close();
$mysqli->close();
下面示例select的预处理
//解释部份省略
$sql = "select * from table_name where id<?";
$stmt = $mysqli->prepare($sql);
$id = 30;
$stmt->bind_param("i", $id);
$stmt->execute();
//猎取效果集
$result = $stmt->get_result();//效果集取后的操纵就和之前一样了
//猎取一切数据
$data = $result->fetch_all(MYSQLI_ASSOC);
$result->close();
$mysqli->close();

一次实行多条sql语句multiquery(不引荐),实行效果不是效果集,affectd_rows是末了影响的条数

<?php
$sql_arr = array(
    "insert into table_name (`name`,`address`) values ('xiaoming','a')",
    "insert into table_name (`name`,`address`) values ('xiaohong','a')",
    'delete from table_name where id=23',
);
$sql = implode(';', $sql_arr);
$result = $mysqli->multi_query($sql);
if($result === false){
    echo $mysqli->error;
}
$mysqli->close();

更多的PHP相干学问,请接见ki4网!

以上就是PHP mysqli操纵数据库的细致内容,更多请关注ki4网别的相干文章!


本文:【后端开辟】PHP mysqli操纵数据库 本文链接:https://www.21nn.cn/%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91/83889.html 本站所以图片、文章仅限用于学习和研究目的; 不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 本站信息来自网络,版权争议与本站无关。 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 如有侵权请邮件与我们联系处理。i@ki4.cn
喜欢 (0)
[1353713598@qq.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址