Php 如何在mysql中为代码编写存储过程
不确定如何为下面的php函数编写存储过程。正在编写一个存储过程,用于检查某个范围内的重复Php 如何在mysql中为代码编写存储过程,php,mysql,stored-procedures,Php,Mysql,Stored Procedures,不确定如何为下面的php函数编写存储过程。正在编写一个存储过程,用于检查某个范围内的重复 function check_for_duplication($job_no) { global $connection; $query = "SElECT COUNT (*) "; $query .= "FROM jobs "; $query .= "WHERE job_no = {$job_no}"; $query .
function check_for_duplication($job_no) {
global $connection;
$query = "SElECT COUNT (*) ";
$query .= "FROM jobs ";
$query .= "WHERE job_no = {$job_no}";
$query .= "AND start <= {$new_end}";
$query .= "AND end >= {$new_start}";
$job_set = mysqli_query($connection, $query);
confirm_query($job_set);
if($job = mysqli_num_rows($job_set)) {
return $job_set;
} else {
return null;
}
}
功能检查是否存在重复($job\u no){
全球美元连接;
$query=“选择计数(*)”;
$query.=“来自作业”;
$query.=“其中作业号={$job\u no}”;
$query.=“AND start={$new_start}”;
$job\u set=mysqli\u query($connection,$query);
确认查询($job\u set);
如果($job=mysqli\u num\u行($job\u集)){
返回$job_set;
}否则{
返回null;
}
}
您可以尝试这样的方法
DROP FUNCTION IF EXISTS check_for_duplication
CREATE FUNCTION check_for_duplication
(varJobNo IN datatype,
varNewEnd IN datatype,
varNewStart IN datatype)
RETURNS CURSOR
BEGIN
// this is where we declare our variables
DECLARE var_cursor CURSOR;
// begin logic
SELECT COUNT (*) INTO var_cursor
FROM jobs
WHERE job_no=varJobNo AND
start<=varNewEnd AND
end>=varNewStart;
RETURN var_cursor;
END;
DROP函数(如果存在)检查\u是否重复
为复制创建函数检查
(数据类型中的varJobNo,
数据类型中的varNewEnd,
数据类型中的varNewStart)
返回光标
开始
//这就是我们声明变量的地方
声明变量游标;
//开始逻辑
在变量光标中选择计数(*)
来自乔布斯
其中job_no=varJobNo和
start=varNewStart;
返回变量游标;
结束;
这只是一个基本函数,仍然需要您在php中执行一些逻辑,但您可以调整该函数以执行更多操作。我知道有一种方法可以使用存储过程返回数据,但这样做对我来说更容易。函数用于返回数据,而过程用于执行某些操作而不返回任何内容。我希望这对您有所帮助。只包含select查询的存储过程基本上是没有意义的。您从中获益甚微,最终只是将一些代码从php转移到db中。存储过程往往是一个更复杂的野兽:处理结果的多个查询和/或逻辑。
$new\u end
和$new\u start
来自哪里?它们不是函数的参数。