2011年03月10日 PHPとMYSQLメモ

By | 2011年3月9日

PHPとMYSQLのメモ。

○1.連番取得
 1.シーケンス作成
  CREATE TABLE sequence (id INT NOT NULL);
  INSERT INTO sequence VALUES (0);

 2.値取得
  UPDATE sequence SET id=LAST_INSERT_ID(id+1);
  SELECT LAST_INSERT_ID();

ちなみに、最初のコネクション時、
UPDATE sequence SET id=LAST_INSERT_ID(id);等を実行しないと、
SELECT LAST_INSERT_ID();は0を返す。この2つはセットだな。。

現在の値を取得するには、
UPDATE sequence SET id=LAST_INSERT_ID(id);
SELECT LAST_INSERT_ID();
 
 
 
○2. DBに格納したデータ(例:シーケンス)をPHPの変数に格納し、使用する。
・mysql_queryでSQL実行。

$result = mysql_query(“UPDATE sequence SET id=LAST_INSERT_ID(id)”);
  if (!$result) {
die(‘sequenceクエリー1が失敗しました。’.mysql_error());
  }

$result2 = mysql_query(“SELECT LAST_INSERT_ID()”);
  if (!$result2) {
die(‘sequenceクエリー2が失敗しました。’.mysql_error());
}
 
・mysql_fetch_rowで値を取得。
 #最初、$k=$result2としたが意図した値を取得できなかった。(Resource id #2等となる)
 #調べてみると、mysql_queryの戻り値はリソース型というものらしい。
 #取得には、mysql_fetch_row、mysql_fetch_array()等を使用。

  $k = mysql_fetch_row($result2);
 
 
○参考
http://tisiki-z.net/php_mysql_query_fetch_array.html