0

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

有没有人有什么建议?万分感谢。

4

3 回答 3

1

试试这个:

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

题外话:

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

于 2013-05-23T21:08:01.563 回答
1

我不确定,您是否需要选择 MAX id。PHP有一个功能:

mysql_insert_id - 检索前一个查询(通常是 INSERT)为 AUTO_INCREMENT 列生成的 ID。我想,这是你的情况。

由于您只插入 1 行,请尝试以下操作:

$db_postid = mysql_insert_id();

请不要使用 mysql_* 函数,它们已被弃用。请改用 mysqli。此外,您的代码容易受到 SQL 注入的影响:在 INSERT 查询中使用 $user 变量之前不要引用它。

于 2013-05-23T21:14:40.153 回答
0
SELECT MAX(id) FROM post WHERE user_id = 123
于 2013-05-23T21:07:47.303 回答