重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

PHPから「select max(id) from table」で「idで最大」が得られていないようで困っています。
一応、sqlite3で同じコマンドを叩いた場合ひ期待した値は帰ってきますが、上記のPHPのコマンドではサイズが0のオブジェクトが返って来ます。
また、このコマンドは「一番新しく追加された項目のidを求める」為に必要なのですが、もしmax(id)を使用しない方法をご存知であれば御教示下さい。

A 回答 (2件)

そのIDがINTEGER PRIMARY KEYということなら、last_insert_rowid()でいいのでは?



http://www.dbonline.jp/sqlite/function/index24.h …
http://www.dbonline.jp/sqlite/table/index8.html
    • good
    • 0

ちゃんと以下のコードで取得できていますが…



<?php

try {

$pdo = new PDO('sqlite::memory:');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("CREATE TABLE test(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)");
$pdo->exec("INSERT INTO test(name) VALUES ('foo')");
$pdo->exec("INSERT INTO test(name) VALUES ('bar')");
$pdo->exec("INSERT INTO test(name) VALUES ('baz')");
var_dump($pdo->query("SELECT max(id) FROM test")->fetchColumn());

} catch (PDOException $e) {

var_dump($e->getMessage());

}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!