Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在mysql中为代码编写存储过程_Php_Mysql_Stored Procedures - Fatal编程技术网

Php 如何在mysql中为代码编写存储过程

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 .

不确定如何为下面的php函数编写存储过程。正在编写一个存储过程,用于检查某个范围内的重复

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
来自哪里?它们不是函数的参数。