【发布时间】:2017-11-28 02:09:01
【问题描述】:
我的项目是我的小学校的简单出勤记录。我正在通过在线表单提交进入和退出日志,并使用此查询将它们写入数据库:
$sql = "INSERT INTO table_one (first_name, last_name, location)
VALUES ('$first_name', '$last_name', '$location')";
效果很好 - 到目前为止一切都很好。
同时,我想将一些提交的信息写入同一个数据库中的另一个表。此查询在单独运行时可以正常工作:
$sql = "UPDATE another_table SET location='$location' WHERE first_name='$first_name'";
但是我的问题是如何让它们按顺序发生。只是连续列出它们是行不通的:
$sql = "INSERT INTO table_one (first_name, last_name, location) VALUES
('$first_name', '$last_name', '$location')";
$sql = "UPDATE personnel_table SET location='$location' WHERE
first_name='$first_name'";
结合这两个命令以使它们一起执行的最有效(和最安全)的方法是什么?
【问题讨论】:
-
$sql = "UPDATE another_table SET location='$location' WHERE first_name='$first_name'";在这里你应该使用那个人的用户 ID 作为标识符,否则如果你的表有John并且你添加另一个john这将更新所有John的记录 -
“仅仅连续列出它们是行不通的” -- 为什么它行不通?
-
这里只是写了一个名为 $sql 的字符串
-
所有插入查询都会为您提供插入行的 id,如 $mysqli->insert_id (返回最后插入的 id)
-
1.简单地将这些字符串分配给变量并不是查询的目的。 Notice here 致电
mysql_query()。您必须依次运行每一个。 2. 我强烈建议您将do not interpolate 放入那些SQL 查询字符串中。 3.我强烈建议你不要自己用PHP写SQL。有很多框架和 ORM 比手写查询更好地为您做到这一点。