0

以前のクエリから自動インクリメントされた ID を取得しようとしています。例外が発生しました: 1305 FUNCTION THE_NAME_OF_MY_DATABASE.mysqli_insert_id が存在しません。

  1. これは正しい構文エラーではありませんか?
  2. この機能を持つように mysql をどこで変更できますか、または何を言い換える必要がありますか? これをグーグルで調べたところ、さまざまな回答が見つかりました。

    $action = isset( $_POST['action'] ) ? $_POST['action'] : "";
    if($action == "create"){
    //write the query for character creation
    
    $query = "(all of my stuff that I'm putting into another database that works)";
    
    $query1 = "INSERT INTO playerskill
                    (skillid, charid)
    
                    VALUES ('".$_POST['skills']."',mysqli_insert_id());
                    ";
    //what happens when successful or not
    if( $mysqli->query($query) ) {
        echo $query ;
        echo "Character was approved.";
    }else{
        echo "Database Error: Unable to update record.";
        echo $mysqli->errno;
        echo mysqli_error($mysqli);
    }
    }
    
    //what happens when successful or not
    if( $mysqli->query($query1) ) {
        echo $query1 ;
        echo "Character was approved.";
    }else{
        echo "Database Error: Unable to update record.";
        echo $mysqli->errno;
        echo mysqli_error($mysqli);
    }
    
4

2 に答える 2

2

あなたのコードごとに:

$query1 = "INSERT INTO playerskill (skillid, charid)
           VALUES ('".$_POST['skills']."',mysqli_insert_id());";

mysqli_insert_id()他のすべてのmysqli関数と同様に、DB 接続変数を指定する必要があることに注意してください。

残りのコードのほとんどは mysqli の OO 構文を使用していることに注意してください。これは、接続変数がオブジェクト名として指定されていることを意味します。ここの場合mysqli_insert_id()、手続き型の構文を使用して呼び出しています。この場合、最初のパラメーターとして接続変数を指定する必要があります。

したがって、次のいずれかが必要mysqli_insert_id($mysql)です$mysql->insert_id

これで問題は解決するはずです。

于 2013-06-18T12:51:13.747 に答える
1

さて、あなたは PhP 関数を SQL クエリに使用しようとしています... うまくいきません!

PhP で関数を使用する方法について少し説明します: http://www.w3schools.com/php/func_mysqli_insert_id.asp

于 2013-06-18T12:45:57.250 に答える