PHP / mySQL ---选择存在另一个值的最大值

时间:2013-05-23 20:59:50

标签: php mysql

我最近和我的一个朋友在一个项目上使用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");
?>

有没有人有任何建议?非常感谢。

3 个答案:

答案 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)

试试这个:

SELECT * FROM post WHERE id IN (SELECT MAX(id) FROM post) AND ...

非主题:

您应该使用MysqliPDO来建立MySQL连接,而不是不推荐使用的mysql_函数。