2010-12-14 15 views
1

データベースに新しい行を追加する簡単なSQLクエリがあり、フィールドをJavaScriptに戻す必要があります。フィールドはAUTO_INCREMENTを行いますが、私はと呼ばれるstupildyそれはそうmysql_insert_id doesntの仕事「をITEMID」と私は私が行くと使用するすべてのPHPファイルを修正する時間を持っていないと思う「のitemId」最後の行がテーブルに追加されました -

それは場合に役立ちます。ここに私のコードがある:

$addMainItem = "INSERT INTO newsItems (itemId, title, date, tags, location, latitude, longitude, visibleFrontpage, introText, fullDome, liveEvent, customServing, visitorAttraction, retail, digitalCinema, visiblePublic, thumbPath, links, smallDesc) VALUES ('','$title','$date','$tags','$loco','$lat','$long','$visiFront','$intro','$dome ','$live','$custom','$attrac','$retail','$cinema','$public','$thumbPath','$links','$smallDesc')"; 
$result = mysql_query($addMainItem) or die('error '.mysql_error()); 

if($result) echo (mysql_insert_id()); 
+1

フィールド名に問題はないはずです。この関数は実際には、最後のクエリで更新された 'auto_increment'型の最初のフィールドを探します。 php.netから: "前のクエリ(通常はINSERT)でAUTO_INCREMENTカラムに対して生成されたIDを取得します。" – skndstry

+0

ああ、あなたは正しいです。これは、私はそれが含まれている別のPHPファイルでの接続を持っていたので、それは未定義を返したようだ。私は接続PHPを同じファイルに移動したときに作業を開始しました。 – manycheese

答えて

2

私はこれまで、カラム項目の命名がmysql_isert_id()を壊していると聞いたことがありません。

auto_incrementが動作している場合は、最後に挿入されたレコードを選択することができます。

SELECT * FROM newsItems ORDER BY itemId DESC LIMIT 1 

あなたはInnoDBテーブルを使用していて、競合状態を心配している場合は、INSERT文との取引にselect文を置くことができます。

+0

itemIdは問題ではないことが判明し、mysql_isert_id()は私のPHPを同じファイルに移動したときに機能しました。 – manycheese

1
mysql_query("SELECT LAST_INSERT_ID()"); 

あなたは何をお探しですか?

関連する問題