我的问题是:我创建了一个从 php 到 mysql 的存储过程。现在,在有人谈论这种做法之前,该程序运行良好。问题是这样的,当我从 php 调用该过程并且我知道已输入一条记录时,mysql_insert_id() 返回 0...任何想法为什么?
哦,是的,我的 id 字段是 AUTO_INCREMENT 和 PRIMARY KEY
ps 如果有一种简单的方法可以在这里格式化我的代码,请告诉我。我把pre放在html中,但似乎效果不太好。
提前泰。
$PROCEDURE_INSERT_UPDATE_BOARD =
"
创建过程 InsertUpdateBoard(IN `pNewBoardUUID` CHAR(36),
在 `pOldBoardUUID` CHAR(36) 中,
在 `pSimName` VARCHAR(40) 中,
在 `pOwnerName` VARCHAR(64) 中,
在 `pOwnerUUID` CHAR(36) 中,
在 `pLandmark` VARCHAR(80) 中,
在 `pVersion` VARCHAR(10) 中,
在`pManagerUUID` CHAR(36) 中,
在 `pBoardURL` CHAR(80) 中,
IN `pPassword` CHAR(8))
开始
调用 InsertUpdateSims(`pSimName`);
调用 InsertUpdateAvatars(`pOwnerName`, `pOwnerUUID`);
插入板(`boardUUID`,`simId`,`ownerId`,`landmark`,
`version`, `managerId`, `boardURL`, `password`)
值(`pOldBoardUUID`,
(从 2starsglobal.sims 中选择 rS.id 作为 rS
其中 rS.name=`pSimName`),
(从 2starsglobal.avatars 中选择 rA.id 作为 rA
其中 rA.UUID = `pOwnerUUID`),
`pLandmark`,`pVersion`,
(从 2starsglobal.avatars 中选择 rA2.id 作为 rA2
其中 rA2.UUID = `pManagerUUID`),
`pBoardURL`,
`pPassword`)
在重复键更新`boardUUID`=`pNewBoardUUID`,
`地标`=`pLandmark`,`版本`=`pVersion`,
`boardURL`=`pBoardURL`;
结尾
";
和 PHP 代码
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';
}
}