我正在尝试使用prepared语句查询向表中插入多行。我需要从第二个表中检索2个值,并将它们与3个参数一起插入。
mysql只将子查询看作一个值,而不是检索到的2,因此请求添加另一个参数,因为只有4个参数存在。
$stmt = $mysqli->prepare("INSERT INTO tbl_permit_daily_sign_off (permit_id, shift, employee_id, sign_off_date, type)
VALUES ((SELECT tbl_permit_project.permit_id, tbl_shifts.shift_name FROM tbl_permit_project
INNER JOIN tbl_shifts ON tbl_permit_project.project_id = tbl_shifts.project_id
WHERE tbl_shifts.end_time <= NOW()), ?, ?, ?)");
$stmt->bind_param("iss", $permit_employee = 0, $today, $type = "auto");
$stmt->execute();
$stmt->close();
1条答案
按热度按时间6tqwzwtp1#
你需要
INSERT ... SELECT
插入形式,而不是INSERT ... VALUES()
形式。这是怎么回事?
1) 您可以设计一个select查询,给出要在insert查询中使用的列。然后测试并排除故障。
2) 你把
INSERT INTO tbl (col, col, col...)
就在你选择之前。插入选择列
(permit_id, shift, employee_id, sign_off_date, type)
但是你的选择只提到其中的两列。你需要选择提到所有五个。