チョコミントアイス

CakePHPとMySqlを使用しています。INSERTしたあと、idを取得する方法について教えて頂きたいです。

データをINSERTとSELECTをする関数を作成し、
メインの関数でINSERTとSELECTをする関数を呼び出すと、idがNULLとなってしまいます。

しかし、1つの関数でINSERTとSELECTを行うとidを取得する事ができました。

この方法は問題ないのでしょうか?
この方法だとなぜidが取得できるんでしょうか?

また、これ以外の方法でidを取得できる方法があればお教え頂きたいです。

宜しくお願いします。

【hogeテーブル】
id(PRIMARY。オートインクリメントさせています)
name

●idがNULLになる方法
function main()
{
$this->insertHoge();
$id = $this->getHoge(); ←結果がNULLになる
}

function insertHoge()
{
$sql = "INSERT INTO hoge ('name') VALUES('ABC')";
$result = $this->query($sql);

return $result;
}

function getHoge()
{
$sql = "SELECT id FROM hoge WHERE name='ABC'";
$result = $this->query($sql);

return $result;
}

●idが取得できる方法
function main()
{
$id = $this->insertHoge(); ←idがかえってくる
}

function insertHoge()
{
$sql = "INSERT INTO hoge ('name') VALUES('ABC')";
$result = $this->query($_sql);

$sql = "SELECT id FROM hoge WHERE name='ABC'";
$result = $this->query($_sql);

return $result;
}

A 回答 (1件)

$sql = "INSERT INTO hoge ('name') VALUES('ABC')";



でフィールド名がクォーテーションで囲んでありますが、
その構文って正しかったでしょうか?
$this->insertHoge();
の戻り値を確認されていないようですし。


$sql = "SELECT id FROM hoge WHERE name='ABC'";
$result = $this->query($_sql);
については、$sqlと $_sqlの違いで、
別のSQLを実行しているということはないですか?
    • good
    • 0

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