首页 > 后端开发 > 正文

PHP下如何创建MYSQL存储过程

2025-02-22 13:46:12 | 我爱编程网

小编今天整理了一些PHP下如何创建MYSQL存储过程相关内容,希望能够帮到大家。

本文目录一览:

PHP下如何创建MYSQL存储过程

php高级教程

php高级教程

导语:php是it行业语言,也是一门较热的网络技术,下面就由我为大家介绍一下php高级教程,欢迎大家阅读!

一、PHP- 多维数组:

$cars = array(

array("huawei","12","11"),

array("meizu","23","12"),

array("iphone","12","4")

);

$title = array("手机总共有:","个,已经卖出去了","个!");

for($i=0;$i{ for($j=0;$j { echo $cars[$i][$j]; echo $title[$j]; } echo " ";}?>

输出:

huawei手机总共有:12个,已经卖出去了11个!

meizu手机总共有:23个,已经卖出去了12个!

iphone手机总共有:12个,已经卖出去了4个!

二、PHP 日期和时间

date() 函数的格式参数是必需的,它们规定如何格式化日期或时间。

下面列出了一些常用于日期的字符:

·d - 表示月里的某天(01-31) D-表示当前这天的英文星期简写

·m - 表示月(01-12) M-表示当前月的英文缩写

·Y - 表示年(四位数) y-表示年(后两位数)

·1 - 表示周里的某天 L-返回0

其他字符,比如 "/","." 或 "-" 也可被 插入字符中,以增加其他格式。

echo"今天是 " . date("YYYY/m/d") ." "; //2017201720172017/06/26 由此可见不能用js中yyyy-mm-dd的形式

echo"今天是 " . date("Y.m.d") . " "; //2017.06.26

echo"今天是 " . date("Y-M-D") . " "; //17-Jun-Mon

echo"今天是 " . date("l") . " "; //Monday 星期全称

echo"今天是 " . date("L") . " "; //0

?>

获得简单的时间

下面是常用于时间的字符:

date_default_timezone_set("Asia/Shanghai"); //设置时区

echo date_default_timezone_get(oid);//获取当前时区

·h - 带有首位零的 12 小时小时格式 H-24小时格式

·i - 带有首位零的分钟 I-0

·s - 带有首位零的秒(00 -59) S-返回th我也不知道是什么鬼

·a - 小写的午前和午后(am 或 pm) A-返回大写格式:AM或PM

echo"现在是 " . date("h:i:sa") . " "; //现在是 02:15:44pm

echo"现在是 " . date("H:I:SA") . " "; //现在是 14:0:thPM

通过 PHP mktime() 创建日期

date() 函数中可选的时间戳参数规定时间戳。如果您未规定时间戳,将使用当前日期和时间

语法

mktime(hour,minute,second,month,day,year)

$d=mktime(9,12, 31, 6, 10, 215) ;

echo"创建日期是 " . date("Y-m-d h:i:sa", $d) ." "; //在date方法里面传参则取的是参数中的时间,如果不传的话则取的是当前时间

通过 PHP strtotime() 用字符串来创建日期

PHP strtotime() 函数用于把人类可读的字符串转换为Unix 时间。

$d=strtotime("10:38pm April 15 2015");

echo "创建日期是 " . date("Y-m-d h:i:sa", $d);

如果输入了它不能识别的字符串则保存为 1970-01-01 12:00:00am

计算两个时间段内的时间所有的周六

$startdate = strtotime("Saturday");

$enddate = strtotime("+6 weeks",$startdate);

while ($startdate < $enddate) {

echo date("M d", $startdate)," ";

$startdate = strtotime("+1 week", $startdate); //在$startdate基础上加一个礼拜,你还可以加1天,1个月,1年

}

?>

计算距离某一天还有多长时间

$d1=strtotime("2017-7-30");

$d2=ceil(($d1-time())/60/60/24);

echo "距离十二月三十一日还有:" . $d2 ." 天。";

?>

三、PHP Cookies

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

创建cookie

setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于

标签之前。

语法

setcookie(name, value, expire, path, domain);

在下面的例子中,我们将创建名为 "user" 的 cookie,把为它赋值 "Alex Porter"。我们也规定了此 cookie 在一小时后过期:

setcookie("user", "Alex Porter", time()+3600);

?>

注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用setrawcookie() 取而代之)。

取回 Cookie 的值

PHP 的 $_COOKIE 变量用于取回cookie 的值。

// Print a cookie

echo $_COOKIE["user"];

// A way to view all cookies

print_r($_COOKIE);

?>

删除 cookie当删除 cookie 时,您应当使过期日期变更为过去的时间点。

// set the expiration date to one hour ago

setcookie("user", "", time()-3600);

?>

如果浏览器不支持 cookie 该怎么办?

如果您的应用程序涉及不支持cookie 的浏览器,就不得不采取其他方法在应用程序中从一张页面向另一张页面传递信息。一种方式是从表单传递数据(有关表单和用户输入的内容,稍早前我们已经在本教程中介绍过了)。

下面的表单在用户单击提交按钮时向"welcome.php" 提交了用户输入:

Name:

Age:

取回"welcome.php" 中的值,就像这样:

Welcome .

You are years old.

四、PHP Sessions

PHP Session 变量

当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。

通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库中。

Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在cookie 中,亦或通过 URL 进行传导。

开始 PHP Session

在您把用户信息存储到 PHPsession 中之前,首先必须启动会话。

注释:session_start() 函数必须位于

标签之前:

上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。

存储 Session 变量

存储和取回session 变量的正确方法是使用 PHP$_SESSION 变量:

session_start();

// store session data

$_SESSION['views']=1;

?>

//retrieve session data

echo "Pageviews=". $_SESSION['views'];

?>

输出:

Pageviews=1

在下面的例子中,我们创建了一个简单的 page-view 计数器。isset() 函数检测是否已设置 "views" 变量。如果已设置 "views" 变量,我们累加计数器。如果 "views" 不存在,则我们创建 "views" 变量,并把它设置为 1:

session_start();

if(isset($_SESSION['views']))

$_SESSION['views']=$_SESSION['views']+1;

else

$_SESSION['views']=1;

echo "Views=". $_SESSION['views'];

?>

终结 Session

如果您希望删除某些session 数据,可以使用 unset() 或 session_destroy() 函数。

unset() 函数用于释放指定的 session 变量:

unset($_SESSION['views']);

?>

您也可以通过session_destroy() 函数彻底终结 session:

session_destroy();

?>

注释:session_destroy() 将重置 session,您将失去所有已存储的session 数据。

五、PHP 错误处理

错误处理方法:

·简单的 "die()" 语句

·自定义错误和错误触发器

·错误报告

为了避免用户获得类似上面的错误消息,我们在访问文件之前检测该文件是否存在:

if(!file_exists("welcome.txt"))

{

die("File not found");

}

else

{

$file=fopen("welcome.txt","r");

}

?>

假如文件不存在,您会得到类似这样的错误消息:

File not found

比起之前的代码,上面的代码更有效,这是由于它采用了一个简单的错误处理机制在错误之后终止了脚本。

不过,简单地终止脚本并不总是恰当的方式。让我们研究一下用于处理错误的备选的 PHP 函数。

创建自定义错误处理器

创建一个自定义的错误处理器,可以在PHP 中发生错误时调用该函数。

该函数必须有能力处理至少两个参数(error level 和 error message),但是可以接受最多五个参数(可选的:file, line-number 以及error context):

语法

error_function(error_level,error_message,

error_file,error_line,error_context)

参数描述

error_level:必需。为用户定义的错误规定错误报告级别。必须是一个值数。参见下面的表格:错误报告级别。

error_message:必需。为用户定义的错误规定错误消息。

error_file:可选。规定错误在其中发生的文件名。

error_line:可选。规定错误发生的行号。

error_context:可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。

创建错误处理函数

function customError($errno, $errstr)

{

echo "Error: [$errno] $errstr

";

echo "Ending Script";

die();

}

现在,我们已经创建了一个错误处理函数,我们需要确定在何时触发该函数。

Set ErrorHandler

PHP 的默认错误处理程序是内建的错误处理程序。我们打算把上面的函数改造为脚本运行期间的默认错误处理程序。

可以修改错误处理程序,使其仅应用到某些错误,这样脚本就可以不同的方式来处理不同的错误。不过,在本例中,我们打算针对所有错误来使用我们的自定义错误处理程序:

set_error_handler("customError");

由于我们希望我们的自定义函数来处理所有错误,set_error_handler() 仅需要一个参数,可以添加第二个参数来规定错误级别。

//定义错误处理函数

function customError($errno, $errstr)

{

echo "rror: [$errno] $errstr";

}

//设置错误处理函数

set_error_handler("customError");

//触发错误

echo($test);

?>

可能的错误类型:

·E_USER_ERROR - 致命的用户生成的run-time 错误。错误无法恢复。脚本执行被中断。

·E_USER_WARNING - 非致命的用户生成的run-time 警告。脚本执行不被中断。

·E_USER_NOTICE - 默认。用户生成的`run-time 通知。脚本发现了可能的错误,也有可能在脚本运行正常时发生。

例子

在本例中,如果"test" 变量大于 "1",则发生E_USER_WARNING 错误。如果发生了 E_USER_WARNING,我们将使用我们的自定义错误处理程序并结束脚本:

//error handler function

function customError($errno, $errstr)

{

echo "Error: [$errno] $errstr

";

echo "Ending Script";

die();

}

//set error handler

set_error_handler("customError",E_USER_WARNING);

//trigger error

$test=2;

if ($test>1)

{

trigger_error("Value must be 1 or below",E_USER_WARNING);

}

?>

错误记录

通过 E-Mail 发送错误消息

function customError($errno, $errstr)

{

echo "Error: [$errno] $errstr ";

echo "Webmaster has been notified";

error_log("Error: [$errno] $errstr",1,

"526369948@qq.com","From: 526369948@qq.com");

}

六、PHP 异常处理

异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。

当异常被触发时,通常会发生:

·当前代码状态被保存

·代码执行被切换到预定义的异常处理器函数

·根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本

我们将展示不同的错误处理方法:

·异常的基本使用

·创建自定义的异常处理器

·多个异常

·重新抛出异常

·设置顶层异常处理器

Try, throw 和 catch

要避免上面例子出现的错误,我们需要创建适当的代码来处理异常。

正确的处理程序应当包括:

1.Try - 使用异常的函数应该位于"try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。

2.Throw - 这里规定如何触发异常。每一个 "throw" 必须对应至少一个 "catch"

3.Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象

让我们触发一个异常:

//创建可抛出一个异常的函数

function checkNum($number)

{

if($number>1)

{

throw new Exception("Value must be 1 or below");

}

return true;

}

//在 "try" 代码块中触发异常

try

{ 我爱编程网

checkNum(2);//如果抛出异常则执行catch中的语句,这里就不接着往下执行了

//If the exception is thrown, this text will not be shown

echo 'If you see this, the number is 1 or below';

}

//捕获异常

catch(Exception $e)

{

echo 'Message: ' .$e->getMessage();

}

?>

上面代码将获得类似这样一个错误:

Message: Value must be 1 or below

创建一个自定义的 Exception 类

创建自定义的异常处理程序非常简单。我们简单地创建了一个专门的类,当 PHP 中发生异常时,可调用其函数。该类必须是 exception 类的一个扩展。

这个自定义的exception 类继承了 PHP 的 exception 类的所有属性,您可向其添加自定义的函数。

我们开始创建exception 类:

class customException extends Exception //extends 相当于继承关键字

{

public function errorMessage() //定义了自己的报错函数

{

//error message 在继承的类中,可以访问基类的方法

$errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()

.': '.$this->getMessage().' is not a valid E-Mail address';

return $errorMsg;

}

}

$email = "someone@example...com";

try

{

//check if

if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)

{

//throw exception if email is not valid

throw new customException($email);

}

}

catch (customException $e)

{

//display custom message

echo $e->errorMessage();

}

?>

这个新的类是旧的exception 类的副本,外加 errorMessage() 函数。正因为它是旧类的副本,因此它从旧类继承了属性和方法,我们可以使用 exception 类的方法,比如 getLine() 、getFile() 以及 getMessage()。

多个异常

可以为一段脚本使用多个异常,来检测多种情况。

可以使用多个if..else 代码块,或一个 switch 代码块,或者嵌套多个异常。这些异常能够使用不同的 exception 类,并返回不同的错误消息:

PHP下如何创建MYSQL存储过程

PHP下如何创建MYSQL存储过程

直接上代码:
mysql_connect("localhost","user","pwd");
mysql_select_db('testdata') or die (mysql_error());
$sql = "create procedure tb_neaten (in rec int,in pa varchar(15),in qy decimal(10,2),in ar varchar(6))
begin
update test1 set qty=qty-qy where recordnum=rec;
insert into test2 set bname=pa,area=ar,qty=qy,date=date_format(now(),'%Y%m%d'),time=date_format(now(),'%Y%m%d');
end;";
mysql_query($sql) or die (mysql_error());
若是存储过程里含有捕获select结果的语句时,需在mysql_connect时调整参数
mysql_connect("localhost","user","password",1,131072) 
执行时,直接运行
 mysql_query(tb_neaten(va1,va2,va3,va4));

PHP序列化和反序列化

我爱编程网(https://www.52biancheng.com)小编还为大家带来PHP序列化和反序列化的相关内容。

在PHP中,序列化用于存储或传递PHP的值,同时不丢失类型和结构。序列化函数原型如下:

序列化格式通常会将对象保存为字符串,只保存属性值,不保存常量的值。对于父类中的变量,序列化时会保留。在序列化对象时,如果类中存在魔术方法__sleep(),函数会先被调用,然后执行序列化操作,允许自定义序列化行为。

通过将对象序列化为字符串并保存起来,可以将复制的对象或数据保存为序列化值,同时保存结构。这些序列化值通常不推荐保存在数据库中,因为可读性差,迁移和维护不便,也不便于查询。

反序列化使用方法将已序列化的变量转换回PHP值。unserialize()函数用于反序列化字符串。如果在反序列化之前未定义类,PHP会正确执行,并返回一个类名的未定义对象,输出结果如下,未定义类对象会被标记为__PHP_Incomplete_Class。此时如果使用该对象,会抛出E_NOTICE错误。

处理未定义类的对象,可以有两种方案。方案一:定义一个空类覆盖未定义类名;方案二:使用反射类(ReflectionClass)获取类定义,然后反序列化。

实现序列化接口Serializable可以解决在__sleep()方法中返回父类对象的问题。Serializable接口原型如下。定义类实现Serializable接口后,PHP在序列化和反序列化时不会调用__sleep()方法和__wakeup()方法。自定义serialize()方法返回序列化后的大括号内的值,确保序列化和反序列化规则一致。

序列化和反序列化是一种传输抽象数据的思想。通过定义规则,将PHP对象序列化为字节流,方便在不同语言或系统间传输。这对远程调用非常有用。在PHP高级学习交流群中,已有管理整理的知识体系,包括源码、学习视频等资料,欢迎免费领取。

PHP教程适用于1-5年经验的开发者,适合正处于瓶颈期,想要突破自我,进阶中高级、架构师的开发者。教程深度对标腾讯T3-T4标准,为web开发者提供进阶路径。加入特训营可获得内推大厂名额和GO语言学习权限,提供精品福利和限时优惠,包括腾讯高级PHP工程师笔试题目、亿级PV高并发场景订单处理、laravel开发天猫商城组件服务、战旗TV视频直播架构项目实战等资料。

对PHP后端技术、架构技术感兴趣的朋友,欢迎加入官方群,一起学习,相互讨论。群内已有管理整理的知识体系和资料,免费领取。课程深度对标腾讯T3-T4标准,贴身打造学习计划,为web开发人员进阶中高级、架构师提供技术提升路径。加入BAT特训营,获得内推大厂名额和GO语言学习权限,更有限时精品福利。

以上就是我爱编程网小编为大家带来的内容了,想要了解更多相关信息,请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
标签: PHP
与“PHP下如何创建MYSQL存储过程”相关推荐