首页 开发编程 正文

php 怎么做查询

API常见模式1、RPC(远程过程调用协议)RPC是一种进程远程调用的方式,不建议使用file_get_contents函数进行HTTP类型的API调用,用LEFTJOIN可以实现3、php如何用form表单查询数据库?form的数据通过post或者get把数据提交给后台php,php连接数据库查询数据4、php操作数据库的三步骤?链...

php 怎么做查询,PHP网站怎么调用别家的API?

首先我们要知道的是,API有很多种表现形式,对于不同形式的API,调用方式也是不同的。

API常见模式

1、RPC(远程过程调用协议)

RPC是一种进程远程调用的方式,主要用于异构平台间的进程通信,是Client/Server模式。RPC可以使用多种协议(如:HTTP协议、自定义协议等)和序列化方式(如:JSON、XML、二进程),RPC是基于TCP或者自定义协议来实现的,性能较高,但耦合度也较高。

2、SOAP(简单对象访问协议)

SOAP其实是基于HTTP和XML的实现,基于HTTP协议。在耦合度、维护性、扩展性上比RPC要好,但是性能上会低于RPC,特别是XML这种消息传递的方式会影响性能。

虽说SOAP是基于HTTP的,但是SOAP提供了Session/Cookie机制来维持状态,所以一些需要状态的(如:调用某些API前需要进行认证)业务中还能看见SOAP的身影。

3、RESTful

RESTful其实是一种架构风格,它不是一种标准!RESTful可以理解为是Json+HTTP+POST/GET/PUT/DELETE 的组合,同样是基于HTTP协议的。REST相比于SOAP和RPC,更加简洁明了。

RESTful的无状态特性使得其适合在分布式环境中使用,所以现在的API都推荐使用RESTful设计风格。

PHP中如何调用第三方提供的API?

上面讲到了,API有很多种模式,对于不同模式我们调用的方法就不同。下面介绍下PHP如何计用常见模式的API。

1、RPC

如果对方提供的API是RPC形式的,那一般都会提供PHP版本的Client给你,你按说明进行调用即可。

另外PHP生态中也有不少RPC框架,如:PHPRPC、Thrift、gRPC等。

2、SOAP

PHP 5内置有php_soap扩展,此扩展实现了PHP对Web Services的支持。

3、RESTful

说白了RESTful就是HTTP协议,只不过使用了不同的HTTP动词进行请求区分,我们推荐使用cURL类库进行RESTful API的请求。

不建议使用file_get_contents 函数进行HTTP类型的API调用,很多人习惯使用此函数调用HTTP API,但是又不设置超时时间,当API不稳定时严重影响了网站速度。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

PHP中SQL语句关于跨表查询应该怎样写?

你说的是:关联查询,用LEFT JOIN 可以实现

php如何用form表单查询数据库?

form的数据通过post或者get把数据提交给后台php,php连接数据库查询数据

php操作数据库的三步骤?

第一步:链接数据库

MYSQLi_connect('主机地址','mysql用户名','mysql密码 ','数据库','端口号')

返回:如果连接成功,返回资源类型的标志符号;如果连接失败,返回false。

如果我们与mysql建立的连接不只一条,那么以后操作数据库的各种函数都必须传入返回的连接符号;

如果我们与mysql建立的连接只有一条,那么以后操作数据库的各种函数就不必传入这个标识符号。建议都传入。

密码为空可以省略密码

$conn= mysqli_connect("localhost", "root", "123456", "dbname");

第二步:检测数据库连接是否成功

mysqli_connect_errno()与 mysqli_connect_error()

mysqli_connect_errno(); 返回上次连接数据库错误的错误号,连接成功返回0

mysqli_connect_error(); 返回上次连接数据库的错误信息

if(mysqli_connect_errno($conn)){

die("数据库连接失败!失败信息:".mysqli_connect_error($conn));

}

前面两步合并的写法:连接数据库同时判断

$conn = mysqli_connect("localhost", "root", "", "mydb") or die("数据库连接失败!失败信息:".mysqli_connect_error($conn));

第三步:选择数据库

mysqli_select_db($link,$dbname)

参数:①标识符 ②连接数据库名称

连接成功,返回true;连接失败,返回false

如果修改数据库成功,则资源标识符中的数据库就会发生变动;

如果修改失败而没有通过代码终止操作,则后续代码可以使用原数据库继续执行

mysqli_select_db($conn, "mydb") or die("数据库选择失败!");

第四步:设置字符集编码格式

mysqli_set_charset($link,$charset) 只能设置为utf8而不能是utf-8

mysqli_set_charset($conn,"utf8") or die("数据库编码集设置失败!");

第五步:编写sql语句

$sql = "select * from 表名";

第六步:执行sql语句

mysqli_query($link,$sql)

如果是(DML)增、删、改,将返回布尔类型是否成功

返回上一次操作时受影响的行数 mysqli_affected_rows($link)

如果是(DQL)查询,将返回资源结果集

返回资源结果集中的行数 mysql_num_rows($result)

返回资源结果集中的字段数 mysql_num_fields($result)

如果查询失败,返回false

$res = mysqli_query($conn,$sql);

mysqli_insert_id($conn); 执行插入语句是返回上次插入最新插入的主键ID

第七步:解析结果集

var_dump(mysqli_fetch_array($res)); 处理结果集,返回关联数组和索引数组 不常用

参数① 需要处理的结果集

参数② 返回哪种数组格式

MYSQL_ASSOC 关联数组

MYSQL_NUM 数字数组

MYSQL_BOTH 默认。同时产生关联和数字数组

echo "<table border='1' style='border-collapse:collapse;text-align:center;width:200px;'>";

echo "<thead bgcolor='lightblue' style='color:#ffffff;'><td>ID</td><td>姓名</td><td>年龄</td><td>性别</td></thead>";

while($row =mysqli_fetch_assoc($res)){ // 返回关联数组 指针遍历 常用

echo "<tr>";

foreach($row as $value){

echo "<td>{$value}</td>";

};

echo "</tr>";

}

echo "</table>";

mysqli_data_seek($res,0); 设置结果集指针位置,此式表达复位至0

var_dump(mysqli_fetch_object($res));

var_dump(mysqli_fetch_row($res)); 返回索引数组

var_dump(mysqli_fetch_object($res)); 返回对象

var_dump(mysqli_fetch_fields($res)); 返回结果集中每一列的字段信息

第八步:关闭资源与结果集

mysqli_free_result()和mysqli_close()

mysqli_free_result($res); //释放查询资源结果集

mysqli_close($conn); //关闭数据库连接

php如何判断SQL语句的查询结果是否为空?

PHP与mySQL这对黄金搭档配合的相当默契,但偶尔也会遇到一些小需求不知道该怎么做,例如今天要谈到的:如何判断sql语句查询的结果集是否为空!

我们以查询学生信息为例,来看看究竟如何实现我们的需求。

首先,来看看我们的数据表“student”中所存储的数据是个什么样子;

id stuname gender age grade class

1 张三 男 16 17 3

2 李四 男 15 18 2

3 王美丽 女 16 17 5

我们来看看sql查询功能代码,我们要将年龄为16岁的学生信息都查出来;

<?php

$sql = "select * from `student` where `age`='16';";

$rows = mysql_query($rs);

?>

<ul>

<?php

while($rows=mysql_fetch_array($rs)){

?>

<li>姓名:<?php echo $rows['stuname'];?></li>

<li>性别:<?php echo $rows['gender'];?></li>

<li>年龄:<?php echo $rows['age'];?></li>

<li>年级:<?php echo $rows['grade'];?></li>

<li>班级:<?php echo $rows['class'];?></li>

<?php

}

?>

</ul>

以上便是查询功能,当结果集不为空时,一切正常,当数据集为空时,会得到一个空白的ul标签,

作为使用者却不知道为什么没有得到数据,此时我们需要给用户一个提示信息,那么我们就需要判断这个结果集是否为空!

如何才能判断结果集是否为空呢,有下面两个方法:

<?php

//方法一 获取select结果集的行数

$rows=mysql_query("select * from `student` where `age`='16';");

if (mysql_num_rows($rows) < 1){

echo '查询无数据!';

}

//方法二 返回上一次操作受影响的行数

$rows=mysql_query("select * from `student` where `age`='16';");

if(!mysql_affected_rows()){

echo '查询无数据!';

}

?>

知道了方法,那么把方法套到我们的代码中看看效果吧

//方法一

<?php

$sql = "select * from `student` where `age`='16';";

$rows = mysql_query($rs);

?>

<ul>

<?php

if (mysql_num_rows($rs) < 1){

echo '查询无数据!';

}else{

while($rows=mysql_fetch_array($rs)){

?>

<li>姓名:<?php echo $rows['stuname'];?></li>

<li>性别:<?php echo $rows['gender'];?></li>

<li>年龄:<?php echo $rows['age'];?></li>

<li>年级:<?php echo $rows['grade'];?></li>

<li>班级:<?php echo $rows['class'];?></li>

<?php

}

}

?>

</ul>

//方法二

<?php

$sql = "select * from `student` where `age`='16';";

$rows = mysql_query($rs);

?>

<ul>

<?php

if(mysql_affected_rows()){

while ($rows=mysql_fetch_assoc($rs)){

?>

<li>姓名:<?php echo $rows['stuname'];?></li>

<li>性别:<?php echo $rows['gender'];?></li>

<li>年龄:<?php echo $rows['age'];?></li>

<li>年级:<?php echo $rows['grade'];?></li>

<li>班级:<?php echo $rows['class'];?></li>

<?php

}

}else {

echo "查无数据!";

}

?>

</ul>

OK,大功告成,现在查不到数据的时候就会有提示了哦!

分类: Web design

本文转载自互联网,如有侵权,联系删除