Php 使用mysql存储过程更新多行 $UserId=$obj[“UserId”]; $CalendarId=$obj[“arrayOfCalendarIdInStrings”]; $Calendars=分解(“,”,$CalendarId); $Count=计数($Calendars); 对于($i=0;$i
如何转换为Mysql存储过程将查询转换为存储过程:Php 使用mysql存储过程更新多行 $UserId=$obj[“UserId”]; $CalendarId=$obj[“arrayOfCalendarIdInStrings”]; $Calendars=分解(“,”,$CalendarId); $Count=计数($Calendars); 对于($i=0;$i,php,mysql,stored-procedures,Php,Mysql,Stored Procedures,如何转换为Mysql存储过程将查询转换为存储过程: $UserId = $obj ["userid"]; $CalendarId = $obj ["arrayOfCalendarIdInStrings"]; $Calendars = explode ( ",", $CalendarId ); $Count = count ( $Calendars ); for($i = 0; $i < $Count; $i ++) { // Update Q
$UserId = $obj ["userid"];
$CalendarId = $obj ["arrayOfCalendarIdInStrings"];
$Calendars = explode ( ",", $CalendarId );
$Count = count ( $Calendars );
for($i = 0; $i < $Count; $i ++) {
// Update Query
$query = "UPDATE calendars SET `isSelected` = '1' WHERE `calendar_id` = '$Calendars[$i]' AND user_id='$UserId'";
$update = mysql_query ( $query );
}
然后,在php脚本中,您需要执行以下操作:
DELIMITER //
DROP PROCEDURE IF EXISTS myProcedure//
CREATE PROCEDURE myProcedure (
IN vCalendarID int(11),
IN vUserID int(11)
)
BEGIN
UPDATE calendars SET `isSelected` = '1' WHERE `calendar_id` = vCalendarID AND user_id = vUserID;
END//
DELIMITER ;
请注意,
mysql.*
函数已被弃用。改用mysqli或PDO。为什么要将一个简单的update语句转换为存储过程?在循环中,如果有很多记录,它可能会变慢,并且您认为将存储过程放入循环中会更快?你们错了。但我们怎样才能放入存储过程呢?请帮我
$query = "CALL myProcedure('".$Calendars[$i]."','".$UserId."');";
$update = mysql_query ( $query );