3

私は2段階のフォームを持っています。1つ目は情報を入力することですが、2つ目は写真を追加するUPDATEです。だから私がしたいのは、データを更新するために最後に自動インクリメントされたIDを取得することです。LAST_INSERT_ID ()

しかし、私はそれがどこでも更新であることを認識しています。私を助けるための提案はありますか?ありがとうございます。私の英語で申し訳ありません。

ここで私がしたことを見ることができます:

 $sql = 'UPDATE 'jj_news' SET 
cover_picture="'.$large_image_name.$_SESSION['user_file_ext'].'",
 min_picture="'.$thumb_image_name.$_SESSION['user_file_ext'].'", statut="1",
 edited="'.date('Y-m-d h:i:s').'" WHERE id_news= LAST_INSERT_ID(id_news)';
       mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
4

4 に答える 4

2

「セカンドステージ」ではIDを取得できません。insert を実行した直後に取得する必要があります。

したがって、最初の段階で取得し、セッションに保存してから、2 番目の段階で使用します。

于 2013-08-12T10:03:08.023 に答える
1

くそったれ、ID を非表示の投稿フィールドに保存して、フォーム送信の 2 ページ目に渡してみませんか?

于 2013-08-12T11:44:12.207 に答える
-1
mysql_query("INSERT INTO `xy` (`xy`) VALUES ('$_POST[xy]');");
    $insertId = mysql_insert_id();
    mysql_query("UPDATE xy SET xy='$xy' WHERE id='$insertId'");

mysql_* 関数からしかわかりません...

mysqli または PDOを使用しますが、これがお役に立てば幸いです.....

于 2013-08-12T10:00:41.883 に答える
-1

次の機能を試すことができます。

function getLastId($tablename,$id_field){
$id=0;
$sql="select ".$id_field." from ".$tablename." order by ".$id_field." desc limit 1" ;
$res_obj=mysql_query($sql) or die(mysql_error);
if(mysql_num_rows($res_obj)>0){
$result=mysql_fetch_array($res_obj); //we have only on row and column.
$id=$result[$id_field]; //set the last greator Id value;
}
return $id;
}
$newid=getLastId("yourtable","id_field")+1;
//insert your data using $newid instead of autocomplete.
//use $newid during update if update is on new page make a session of $newid. like
$_SESSION['update_id']=$newid;

この関数は、自動インクリメントではなく、id 列を手動でインクリメントします。この機能を使えば状況をコントロールしやすいと思います。

于 2013-08-12T10:44:05.047 に答える