我将id设置为标识主键,但此代码返回null,我不想使用@@IDENTITY
。
$stmt = $db->prepare("INSERT INTO `question_field`(`q_field_id`, `q_field`) VALUES ('','software');SELECT SCOPE_IDENTITY() as last_id");
$stmt->execute();
$row=$stmt->fetch();
echo $row['last_id'];
有什么问题吗?
我假设通过@@IDENTITY
和SCOPE_IDENTITY()
您正在访问Sql Server数据库。
在这种情况下,注意:
- Sql Server的转义是通过
[symbol]
完成的,而不是MySql的反引号。 - 当插入到一个
IDENTITY
列的表时,不要为标识列 指定任何值
。如果IDENTITY
列是q_field_id
,那么需要做的就是:
INSERT INTO [question_field]([q_field])
VALUES ('software');
SELECT SCOPE_IDENTITY() as last_id;
SCOPE_IDENTITY()
函数如果在insert语句进入标识列之前调用该函数将返回空值。"