Stored Procedures and mysql_insert_id Problem

My problem is this: I created a storage procedure from php to mysql. Now, before someone says something about this practice, the procedure works fine. The problem is that when I call the procedure from php and I know that the record is entered, mysql_insert_id () returns 0 ... Any ideas why?

Oh and yes, my id field is AUTO_INCREMENT and PRIMARY KEY

ps If there is an easy way to format my code here, tell me. I put pre in html, but it does not work very well.

Ty in advance.

$ PROCEDURE_INSERT_UPDATE_BOARD = 
"
CREATE PROCEDURE InsertUpdateBoard (IN `pNewBoardUUID` CHAR (36),
                                   IN `pOldBoardUUID` CHAR (36),
                                   IN `pSimName` VARCHAR (40), 
                                   IN `pOwnerName` VARCHAR (64),
                                   IN `pOwnerUUID` CHAR (36),
                                   IN `pLandmark` VARCHAR (80),
                                   IN `pVersion` VARCHAR (10),
                                   IN `pManagerUUID` CHAR (36),
                                   IN `pBoardURL` CHAR (80),
                                   IN `pPassword` CHAR (8))
    BEGIN   
        CALL InsertUpdateSims (`pSimName`); 
        CALL InsertUpdateAvatars (`pOwnerName`,` pOwnerUUID`);

        INSERT INTO boards (`boardUUID`,` simId`, `ownerId`,` landmark`,
                                   `version`,` managerId`, `boardURL`,` password`)
                            VALUES (`pOldBoardUUID`,                                      
                            (SELECT rS.id FROM 2starsglobal.sims AS rS
                                    WHERE rS.name = `pSimName`),
                            (SELECT rA.id FROM 2starsglobal.avatars AS rA
                                    WHERE rA.UUID = `pOwnerUUID`),
                            `pLandmark`,` pVersion`,
                            (SELECT rA2.id FROM 2starsglobal.avatars AS rA2 
                                    WHERE rA2.UUID = `pManagerUUID`),
                            `pBoardURL`, 
                            `pPassword`)
        ON DUPLICATE KEY UPDATE `boardUUID` =` pNewBoardUUID`, 
                    `landmark` =` pLandmark`, `version` =` pVersion`,
                    `boardURL` =` pBoardURL`; 
    End
";

And the php code

function InsertUpdateBoard($boardNewUUID, $boardOldUUID, $simName, 
                           $ownerName, $ownerUUID, $boardLandmark,
                           $versionNumber, $managerUUID, $boardURL)
{ 
    $password = generatePassword(8);

    $query = "CALL InsertUpdateBoard('$boardNewUUID', '$boardOldUUID', '$simName', 
                                         '$ownerName', '$ownerUUID', '$boardLandmark', 
                                         '$versionNumber', '$managerUUID', '$boardURL',
                                         '$password')";

    mysql_query($query) or die("ERROR:QUERY_FAILED " . mysql_error());  

    if(mysql_affected_rows() > 0)
    {
        if(mysql_insert_id() > 0)
        {    
            echo "SUCCESS,$password";
        }
        else 
        {
            echo "SUCCESS"; 
        }
    }
    else
    {
        echo 'FAILED:BOARD_REGISTRATION_UPDATE'; 
    }       

}
+1
1

google

, MySQL $db- > insert_id; 0 , .

MySQL

last_insert_id() intRecordKey;

, .

+2

Source: https://habr.com/ru/post/1652796/


All Articles