0

私は最近、友人と一緒にプロジェクトで PHP と MYSQL を扱っていました。私は同じ問題を何度も乗り越えているようです。

id (自動インクリメンタル) と user_id の 2 つの値を格納するデータベース セットアップがあります。

スクリプトが開始されると、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

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 に答える