我的问题是:我创建了一个从 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';
}
}