PHP+MySQL中如何利用查询获取的id_student值插入新表?
解决方案
你的现有代码其实已经实现了从students表查询id_students并插入到historical_credits表的需求,核心就是INSERT...SELECT的写法:
$insert_query = $con->prepare("INSERT INTO historical_credits (id_students, credits_paid) SELECT id_students, ? FROM students WHERE student_qr = ?" ); $insert_query->bind_param("is", $_POST['credits'], $_POST['namesec']); $insert_query->execute();
这段代码的逻辑是:
- 通过
SELECT id_students FROM students WHERE student_qr = ?匹配到对应学生的ID - 将查询到的
id_students和传入的credits值一起插入到historical_credits表的对应字段中
另外补充几个实用优化点:
- 你之前用
mysqli_real_escape_string处理变量是多余的,预处理语句本身会自动防范SQL注入,不需要额外转义 - 可以添加执行结果判断,确保操作成功,示例:
if (!$stmt->execute()) { // 处理更新失败的情况,比如输出错误信息 echo "更新学生学分失败: " . $stmt->error; } if (!$insert_query->execute()) { echo "插入历史记录失败: " . $insert_query->error; } - 注意变量名一致性,你的表字段是
id_students,但提问里写的是id_student,要确保和数据库实际字段名完全匹配
内容的提问来源于stack exchange,提问作者user19241129
相关产品推荐
相关产品推荐

