MySQL 过程将空结果返回给 PHP [英] MySQL procedure returns empty result to PHP

查看:33
本文介绍了MySQL 过程将空结果返回给 PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一个问题,我编写了一个存储过程,该过程将数据插入到一堆表中,然后通过选择它最终返回和 id.当我在 PHPMyAdmin 中执行存储过程时,插入数据并返回 ID.

I have an issue where I wrote a stored procedure that inserts data into a bunch of tables and then finally returns and id by selecting it. when I execute the stored procedure in PHPMyAdmin, the data is inserted and the ID returned.

当使用 MySQLi 从 PHP 执行过程时,数据被插入到表中,但是当我检查结果以检索新 id 时,结果似乎是空白的.任何帮助在这里将不胜感激.我不确定该过程在返回包含具有新 ID 的行的结果之前是否返回空结果.phpMyAdmin 执行结果中的空行对我来说有点麻烦?

When executing the procedure from PHP using MySQLi, the data is inserted into the tables however when I check the results to retrieve the new id, the result seems to be blank. Any help here would be appreciated. I am not sure if the procedure returns empty results before it returns the result containing the row with the new ID. The Blank lines in the Execution results in phpMyAdmin is a bit of a bother to me?

例程sp_createEvent

事件ID30

存储过程:

DELIMITER $$
CREATE PROCEDURE `sp_createEvent` (IN varEventName varchar(200), IN varUserID INT, IN varPrintingRequested INT, IN varEventCode BIGINT, IN varActiveFrom DATETIME, IN varActiveTo DATETIME, IN varLimitGuestPhotos BIT)
    LANGUAGE SQL
    DETERMINISTIC
    SQL SECURITY DEFINER
    COMMENT 'A procedure'
    BEGIN
    DECLARE albumname VARCHAR(50);
    DECLARE albumslug VARCHAR(50);
    DECLARE usertopalbum INT;
    DECLARE eventalbumid INT;
    DECLARE fullphotosgalleryid INT;
    DECLARE photostripgalleryid INT;
    DECLARE eventid INT;

    DECLARE CONTINUE HANDLER FOR NOT FOUND BEGIN END;

    START TRANSACTION; 

    SELECT 
        CONCAT(u.`display_name`, " - ",varEventName), 
        REPLACE(LOWER(CONCAT(RTRIM(u.`display_name`), "-",varEventName)), " ", "-"), 
        uasc.`album_id`
    INTO
        albumname,
        albumslug,
        usertopalbum
    FROM `wp_users` u
    LEFT JOIN `wp_pocketbooth_useralbumshortcode` uasc on uasc.`wp_user_id` = u.ID
    WHERE u.`ID` = varUserID and
    uasc.`album_id` is not null;

    INSERT INTO `wp_bwg_album`(`id`, `name`, `slug`, `description`, `preview_image`, `random_preview_image`, `order`, `author`, `published`) 
    VALUES (NULL,albumname,albumslug,'smartbooth.co.za Album','','','1','1','1');

    SET eventalbumid = LAST_INSERT_ID();

    INSERT INTO `wp_bwg_gallery`(`id`, `name`, `slug`, `description`, `page_link`, `preview_image`, `random_preview_image`, `order`, `author`, `published`, `gallery_type`, `gallery_source`, `autogallery_image_number`, `update_flag`) 
    VALUES (NULL, CONCAT(albumname, ' (Full Photos)'), CONCAT(albumslug, '-full-photos'),'smartbooth.co.za Gallery','','','','','1','1',1,'','12','');

    SET fullphotosgalleryid = LAST_INSERT_ID();

    INSERT INTO `wp_bwg_gallery`(`id`, `name`, `slug`, `description`, `page_link`, `preview_image`, `random_preview_image`, `order`, `author`, `published`, `gallery_type`, `gallery_source`, `autogallery_image_number`, `update_flag`) 
    VALUES (NULL, CONCAT(albumname, ' (Photo Strips)'), CONCAT(albumslug, '-photo-strips'),'smartbooth.co.za Gallery','','','','','1','1',1,'','12','');

    SET photostripgalleryid = LAST_INSERT_ID();

    INSERT INTO `wp_bwg_album_gallery`(`id`, `album_id`, `is_album`, `alb_gal_id`, `order`) 
    VALUES (NULL,eventalbumid,'0',fullphotosgalleryid,'1');

    INSERT INTO `wp_bwg_album_gallery`(`id`, `album_id`, `is_album`, `alb_gal_id`, `order`) 
    VALUES (NULL,eventalbumid,'0',photostripgalleryid,'1');

    INSERT INTO `wp_pocketbooth_events` (`eventid`, `eventname`, `printingrequested`, `printimages`, `eventcode`, `toplevelalbumid`,`activefrom`,`activeto`, `limitguestphotototime`) 
    VALUES (NULL, varEventName, varPrintingRequested, 0, varEventCode, eventalbumid, varActiveFrom, varActiveTo, varLimitGuestPhotos);

    SET eventid = LAST_INSERT_ID();

    INSERT INTO `wp_pocketbooth_eventsubscriptions` (`subscriptionid`, `userid`, `eventid`, `isowner`) 
    VALUES (NULL, varUserID, eventid, 1);

    commit;

    select eventid;

    END $$
    DELIMITER ;

PHP 代码:

<?php
include 'connection.php';

$userid = $_POST['userid'];
$eventname = $_POST['eventname'];
$printingrequested = $_POST['printingrequested'];
$eventcode = $_POST['eventcode'];
$activefrom = $_POST['activefrom'];
$activeto = $_POST['activeto'];
$limitphotos = $_POST['limitphotos'];

$sql = "CALL `sp_createEvent` ('$eventname' , '$userid' , '$printingrequested' , '$eventcode' , '$activefrom' ,'$activeto', '$limitphotos');";

$res = $connection->query($sql);

if (!$res) 
{
    echo "Error: " . $sql . "<br>" . mysqli_error($connection);
}
else 
{
    $data = array();
    while($row = mysql_fetch_array($res)) {
        $data[] = $row['eventid'];
    }

    echo json_encode($data);
}



@mysqli_close($conn);

?>

推荐答案

代替 SET eventid = LAST_INSERT_ID();写

instead of SET eventid = LAST_INSERT_ID(); write

select LAST_INSERT_ID() into eventid;

这篇关于MySQL 过程将空结果返回给 PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆