编辑:
我试图提交一个带有标题和正文的表单,但我希望标题转到一个表和正文转到另一个表,这本身我可以做但我需要从插入标题生成的ID然后将其表插入到插入主体的表中的字段中,以便将它们链接起来。
到目前为止我所拥有的:我知道它不漂亮且不安全,一旦我学会了如何正确地完成它,我将重新修改它们。
if (@$_POST['post'])
{
$body = @$_POST['body'];
$title = @$_POST['title'];
$BoardID = @$_POST['BoardID'];
$MemberID = @$_POST['MemberID'];
$date = date("Y-m-d H:i:s");
include ('connect.php');
$insert = mysql_query("INSERT INTO threads VALUES ('','$BoardID','$title','$date','$MemberID','','')");
if($insert) {
header("location: ?p=posts&thread=$Thread_ID");
exit();
}
}
我需要以某种方式获取已在插入中生成的$ Thread_ID,并将其添加到第二个插入,以便将post添加到post表中,如果这有意义的话。
我尝试获取最新的$ Thread_ID并添加+1但是如果一次发布多个线程,它们可能会被越过。
我将如何解决这个问题?
答案 0 :(得分:1)
PHP手册告诉我们:
此扩展Mysql自PHP 5.5.0起不推荐使用,不建议用于编写新代码,因为将来会删除它。相反,应该使用mysqli或PDO_MySQL扩展。 (see ref。)
您必须使用mysqli或PDO在PHP和MySQL数据库之间建立连接。
<强>的mysqli 强>
如果您想要插入行的ID,可以使用$mysqli->insert_id
(ref)
示例:
$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
$mysqli->query($query);
printf ("New Record has id %d.\n", $mysqli->insert_id);
<强> PDO 强>
如果您想要插入行的ID,可以使用$dbh->lastInsertId();
(ref)
不要忘记sanatize所有输入。
答案 1 :(得分:-2)
您需要单独执行两个插入查询。
$insert = "INSERT INTO threads VALUES ('','$BoardID','$title','$date','$MemberID','','')";
$result = @mysql_query($insert);
$Thread_ID=@mysql_insert_id();
$insert = "INSERT INTO posts VALUES ('','$BoardID',$Thread_ID','$body','$date','$MemberID')";
$result = @mysql_query($insert);
谢谢,