1
$value = mysql_query("SELECT max(student_id) FROM student_profile");
$stud_id = mysql_fetch_array($value);
COMMIT;
mysql_query("INSERT INTO course_batch (student_id, course_id, batch_id)
VALUES('$stud_id','$course_id','$batch_id')") or die (mysql_error());

我需要有关如何获取 student_profile 表上的最大 ID 并将其存储在 course_batch 表中的帮助。student_id 是自动递增的。TIA

4

2 回答 2

0

有很多选择。您可以使用您当前的代码并像现在一样获取数组并正确使用结果,即

$stud_id['student_id']

编辑- 试试这个

$value = mysql_query("SELECT max(student_id) AS StudId FROM student_profile");
$qryResultArray = mysql_fetch_array($value);
$stud_id = $qryResultArray['StudId'];

mysql_query("INSERT INTO course_batch (student_id, course_id, batch_id)
VALUES('$stud_id','$course_id','$batch_id')") or die (mysql_error());

如果您特别需要使用提交(无论出于何种原因,您还有其他我看不到的代码等),请告诉我。

以上也是非常基本的,它不是检查数组,如果有结果,并且根本没有安全性,所以 sql 注入不受保护(但是当服务器更新他们的 PHP 时,这段代码无论如何也不会很快工作)


或者,您可以通过使用 mysqli 或 PDO 大大提高您的安全性和可用性以及未来的代码证明,这两者虽然学习曲线相当容易学习,并且曾经学习过并不比您现在编写的代码难。您现在使用的功能很快就会给您带来问题,并且需要在您的代码运行之前检查服务器上的 PHP 版本(这在任何情况下都不理想)

非常基本的 PDO 示例:

$db = new PDO(details here);

$stmt = $db->query('select id from student_profile etc');
$stud_id = $stmt->fetchColumn(0);

//then use $stud_id in your update/insert/etc

然后,您只需检查结果是否为假(在其他健全性检查中,以确保您的代码是干净的并考虑所有结果)您可以使用“order by limit 1”或“max,whatever

于 2013-08-21T22:40:26.507 回答
0
$value = mysql_query("SELECT student_id FROM student_profile ORDER BY student_id DESC LIMIT 1");
$row = mysql_fetch_array($value);

$stud_id = $row['student_id'];

mysql_query("INSERT INTO course_batch (student_id, course_id, batch_id)
VALUES('$stud_id','$course_id','$batch_id')") or die (mysql_error());

那正是你想要的?

编辑:

阅读:mysql 扩展已弃用,将来将被删除:改用 mysqli 或 PDO

于 2013-08-22T00:07:00.940 回答