我是靠谱客的博主 粗心西装,最近开发中收集的这篇文章主要介绍mysql存储过程中传入,传出参数和输出多条查询记录的方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

标题mysql存储过程中利用传入和传出参数获取查询记录输出方法。

查询结果有两种:
第一种查询结果是单条记录,可利用传出参数输出,也可直接输出。
第二种查询结果是多条记录,不能用传出参数的方式输出,可直接输出。
例子为查询信息为表中mac字段符合条件的记录。
1、输出单条结果使用传出参数的存储过程如下:

DROP PROCEDURE `find`;
CREATE DEFINER=`user`@`%` PROCEDURE `find`(IN `id` VARCHAR(32) CHARSET utf8, OUT `res` VARCHAR(255) CHARSET utf8) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN
SELECT mac FROM vic_sale WHERE mac=id INTO res;  
SELECT res;
END

2、输出多条结果不使用传出参数的存储过程如下:

DROP PROCEDURE `find`;
CREATE DEFINER=`user`@`%` PROCEDURE `find`(IN `id` VARCHAR(32) CHARSET utf8, OUT `res` VARCHAR(255) CHARSET utf8) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN
SELECT mac FROM vic_sale WHERE mac LIKE CONCAT("%",id,"%"); 
END

PHP代码如下

<?php
header("Content-type: text/html; charset=utf-8"); 
error_reporting(0);//禁用错误报告
$id=$_POST["id"];
echo $id;
echo "<br>";
$conn = new mysqli('localhost','user','password','db');
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "数据库连接成功!<br>";
mysqli_query($db,"SET NAMES utf8"); 
$sql = "call find('{$id}',@res)";
$result=$conn->query($sql);
if ($result==null){echo "没有找到记录!<br>";}
if ($result->num_rows > 0) {
    // 输出数据
    while($row = $result->fetch_assoc()) {
        echo "mac: " . $row['mac']. "<br>";//不使输出参数,查询单个结果或多个结果用这句,$row[]里面放查询字段名。
        echo "res: " . $row['res']. "<br>";//使用输出参数用这句,$row[]里面放传出参数名。
    }
}
//-----------------
$conn->close();
?>

最后

以上就是粗心西装为你收集整理的mysql存储过程中传入,传出参数和输出多条查询记录的方法的全部内容,希望文章能够帮你解决mysql存储过程中传入,传出参数和输出多条查询记录的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部