将结果插入多个表中

时间:2013-07-08 08:51:50

标签: php mysql

编辑:

我试图提交一个带有标题和正文的表单,但我希望标题转到一个表和正文转到另一个表,这本身我可以做但我需要从插入标题生成的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但是如果一次发布多个线程,它们可能会被越过。

我将如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

PHP手册告诉我们:

  

此扩展Mysql自PHP 5.5.0起不推荐使用,不建议用于编写新代码,因为将来会删除它。相反,应该使用mysqli或PDO_MySQL扩展。   (see ref。)

您必须使用mysqliPDO在PHP和MySQL数据库之间建立连接。

<强>的mysqli

如果您想要插入行的ID,可以使用$mysqli->insert_idref

示例:

$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);  

谢谢,