我最近和我的一个朋友在一个项目上使用PHP和MYSQL。我似乎一遍又一遍地遇到同样的问题。
我有一个存储2个值的数据库设置:id(自动增量)和user_id。
当脚本启动时,它会向数据库写入id和user_id。 user_id先前已分配。一旦发生这种情况,将发生另一个查询,该查询在表中查找具有特定“user_id”的最大“id”。然后将其写为文件名并完成脚本。
我遇到问题的部分是获取最大ID的部分。这是我的代码:
<?php
$connect = mysql_connect('localhost','root','PASSWORD') or die("Couldn't connect to database");
mysql_select_db('post', $connect) or die("Couldn't find database");
$user = $_SESSION['id'];
$post_data = $_POST['post'];
$query = mysql_query("INSERT INTO `post`(`id`, `user`) VALUES ('','$user')") or die("failed to connect to database");
$idquery = mysql_query("SELECT * FROM post WHERE id=(SELECT MAX(id) FROM post) AND user='$user'") or die("failed to find max post");
while($row = mysql_fetch_array($idquery) or die("failed to query max post")){
$db_postid = $row['id'];
}
$fc = fopen("./users/post" . $id . ".txt","r+") or die("failed to create file");
fwrite($fc,$post_data) or die("failed to write to file");
fclose($fc) or die("failed to close file");
?>
有没有人有任何建议?非常感谢。
答案 0 :(得分:1)
我不确定,你需要选择MAX id。 PHP有一个功能:
mysql_insert_id - 检索前一个查询(通常是INSERT)为AUTO_INCREMENT列生成的ID。我想,这是你的情况。
当你只插入一行时,试试这个:
$db_postid = mysql_insert_id();
请不要使用mysql_ *函数,不推荐使用它们。请改用mysqli。此外,您的代码易受SQL注入攻击:在INSERT查询中使用它之前,不引用$ user变量。
答案 1 :(得分:0)
SELECT MAX(id) FROM post WHERE user_id = 123
答案 2 :(得分:0)