我需要最后插入对象的id。我使用预准备语句来避免sql注入。 但我不知道如何获得身份证。
$sql = "INSERT IGNORE INTO faculty (id, term, role, prefix, first_name,
middle_name, last_name, suffix) VALUES (?,?,?,?,?,?,?,?)";
if (!($stmt = $mysqli->prepare($sql)))
echo "Faculty Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
$stmt->bind_param('sissssss',
$faculty['id'],
$faculty['term'],
$faculty['role'],
$faculty->name->prefix,
$faculty->name->first,
$faculty->name->middle,
$faculty->name->last,
$faculty->name->suffix
);
if (!$stmt->execute())
echo "Faculty Execute failed: (" . $mysqli->errno . ") " . $mysqli->error;
$result = $stmt->insert_id;
echo "\n Result:" . $result;
$stmt->close();
尽管数据库中有条目
,结果仍为0解决方案 该元素正在插入数据库中。问题是,当我创建表时,id不是一个整数,它是一个表示员工ID的varchar。为了解决这个问题,我将员工ID添加为表中的附加列,并使用了默认的id int auto_increment主键,并且它有效。
答案 0 :(得分:3)
尝试将$result = $stmt->get_result();
更改为$result = $stmt->insert_id;
get_result()
更适合SELECT
次查询,而不是INSERT
次。