-1

次のコードを使用して、(クラスから) php pdo を使用して mysql にデータを挿入します。

$this->pdo = $this->connectMySql();
        if(isset($params['content'])){
            $query = 'INSERT INTO pages SET menu_name = :menu_name, position = :position, visible = :visible, content = :content, pagetype = :pagetype';
        }else{
            $query = 'INSERT INTO pages SET menu_name = :menu_name, position = :position, visible = :visible, pagetype = :pagetype';
        }
        $stmt = $this->pdo->prepare($query);
        $stmt->bindParam(':menu_name',$params['menu_name'], PDO::PARAM_STR);  // PDO::PARAM_STR is used for treating 
        $stmt->bindParam(':position',$params['position'], PDO::PARAM_INT);
        $stmt->bindParam(':visible',$params['visible'], PDO::PARAM_INT);
        if(isset($params['content'])){
            $stmt->bindParam(':content',$params['content'], PDO::PARAM_STR);
        }else{}
        $stmt->bindParam(':pagetype',$params['pagetype'], PDO::PARAM_STR);
        if(!$stmt->execute()){
            return false;
        }
        $lastid = $this->pdo->lastInsertId();
        $this->pdo = null;
        return $lastid;

try catch ブロック内にあります。挿入は機能しますが、最後に挿入されたIDを取得したいのですが、次のものを使用しました(ここでその一部を見ることができます)が、index.phpページではIDを取得していないようです:

$params = array(
            'menu_name' => $_POST['menu_name'],
            'position' => $_POST['position'],
            'visible' => $_POST['visible'],
            'content' => $_POST['editor1'],
            'pagetype' => $_POST['pagetype']
            );
if ($pages->insertPage($params)) {
    $html->redirect_to("content.php?pageid=" . $pages->lastid);
}else{
    $message = "Aanmaken van pagina is niet gelukt!";
}

どんな助けでも大歓迎です。

これが重複している理由がわかりません。私は他の質問を見てきましたが、それはlastinsertidをデータベースに保存することです(おそらくクラス内でさえありません)。
メイン ページ (index.php) で (クラスから) 挿入関数を呼び出します。挿入すると、メイン ページに ID が返されます。他の投稿から (lastinsertid を取得して返すための) コードを変更しようとしましたが、取得できるのは空の値だけです。

4

1 に答える 1

-1

メソッドのように lastid を呼び出すと、 index.php:9 で $pages->lastid の方が良いと思います

于 2013-02-26T22:36:07.053 に答える