我有一个有两张桌子的预订系统。一张表供用户(称为用户)使用,以便用户知道是否已经预订,另一张表则供教师使用(称为预订),以便教师知道哪些人已经报名参加了他们的课程。下面是一个用户取消预订类的示例。
$new_classes_booked=$classes_booked-1;
$sql2 = $con->query("UPDATE users SET $classes_booked='{$new_classes_booked}' where userID='{$User}'");
$sql2 = $con->query("DELETE FROM bookings where user='{$user}' AND id_class='{$id_classs}'");
该系统将被许多用户和教师同时使用。鉴于此,是否有更高效、更安全的方法来执行此操作?
我建议您执行两个查询,一个接一个。第二个会执行得很快,不会有任何区别。如何查看mysqli_multi_query()函数。
有没有更有效的方法来执行这个?
是的
坦率地说,表结构非常糟糕,违反了数据库设计的每一条规则。
在users表中不应该有类似$classes_booked的内容。预订的课程数量应从预订表中获取。
有没有一种更有效、更安全的方法来执行这项任务?
是的
使用事先准备好的语句。
由于我的mysqli教程还没有准备好,下面是基于PDO的安全查询:
$sql = "DELETE FROM bookings where user=? AND id_class=?";
$con->query($sql)->execute([$user,$id_class]);
使用php在mysqli中查询2个还是1个?
在PHP中运行2个或多个查询绝对没有错。一个典型的应用程序在每次命中时都会运行几十个SQL查询,并且感觉非常健康。
只要您不是在循环中运行查询,就可以使用您认为适合您任务的任意数量的查询。