0

编辑:

我试图提交一个带有标题和正文的表单,但我希望标题转到一个表,正文转到另一个表,这本身我可以做到,但我需要将标题生成的 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 表中,如果这有意义的话。

我尝试获取最新的 $Thread_ID 并添加 +1,但如果同时发布多个线程,它们可能会被交叉。

我将如何解决这个问题?

4

2 回答 2

1

PHP手册告诉我们:

此扩展 Mysql 自 PHP 5.5.0 起已弃用,不建议用于编写新代码,因为它将来将被删除。相反,应该使用 mysqli 或 PDO_MySQL 扩展。(见参考文献。)

您必须使用mysqliPDO在 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 )

并且不要忘记清理您的所有输入。

于 2013-07-08T09:34:17.920 回答
-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);  

谢谢,

于 2013-07-08T08:56:00.733 回答