我正在尝试使用SELECT LAST_INSERT_ID()
获取主键,但收到错误SQLSTATE[HY000]: General error
function logCallDetails($db,$student_id,$currentStory,$currentCall){
try{
$query= "INSERT INTO `call`(`student_id`, `story_id`, `call_number`) VALUES ('$student_id','$currentStory','$currentCall');SELECT LAST_INSERT_ID();";
echo $query;
$result=$db->prepare($query);
$result->execute();
$result = $result->fetchall(PDO::FETCH_ASSOC);
#$result->closeCursor();
return $result;
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
initialize.php
$get_call_id=logCallDetails($db,$student_id,$call_number,$story_id);
foreach($get_call_id as $row=>$s)
{
foreach($s as $k=>$v)
{
echo $k.'->'.$v.'<br/>';
}
}
答案 0 :(得分:0)
您在一次查询调用中获得了2个单独的查询。基础MySQL驱动程序出于安全原因不允许这样做。您必须单独准备/执行INSERT
和SELECT
查询。
答案 1 :(得分:0)
function logCallDetails($db,$student_id,$currentStory,$currentCall){
$query= "INSERT INTO `call`(`student_id`, `story_id`, `call_number`)
VALUES (?,?,?)";
$result=$db->prepare($query);
$result->execute(array_slice(func_get_args()));
return $db->lastInsertId();
}
$get_call_id = logCallDetails($db,$student_id,$call_number,$story_id);
echo $get_call_id;