1

だから、私は usercake (ユーザー管理のためのオープン ソース php mysql の組み合わせ) を使用しています。とにかく、私はそれをインストールし、完全に問題なく動作しています。登録に表示名とユーザー名の両方を含めないようにしたいので、すべてのコードから表示名を削除しました。私の古いユーザーは引き続きログインして正常に機能しますが、新しいユーザーを登録するときにエラーが発生します.それを理解することはできません.それらを参照する必要があったのはこれが初めてです)最初に、実際にデータを準備する/mysqlに挿入するコードを次に示します(すべてのエスケープとクリーニングは省略されています)

  $stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."users (
          user_name,
          password,
          email,
          activation_token,
          last_activation_request,
          lost_password_request, 
          active,
          title,
          sign_up_stamp,
          last_sign_in_stamp
          )
          VALUES (
          ?,
          ?,
          ?,
          ?,
          '".time()."',
          '0',
          ?,
          'New Member',
          '".time()."',
          '0'
          )");

 $stmt->bind_param("sssssi", $this->username, $secure_pass, $this->clean_email, $this->activation_token, $this->user_active);
         $stmt->execute();
         $inserted_id = $mysqli->insert_id;
         $stmt->close();

 //Insert default permission into matches table
 $stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."user_permission_matches  (
        user_id,
        permission_id
        )
        VALUES (
        ?,
        '1'
        )");
 $stmt->bind_param("s", $inserted_id);
 $stmt->execute();
 $stmt->close();

したがって、上記のすべて(キーワード)はすべて問題ないと思います。上記のコードが呼び出されたときのログmysqlログファイルはここにあります

           65 Prepare   INSERT INTO uc_users (
                user_name,
                password,
                email,
                activation_token,
                last_activation_request,
                lost_password_request, 
                active,
                title,
                sign_up_stamp,
                last_sign_in_stamp
                )
                VALUES (
                ?,
                ?,
                ?,
                ?,
                '1365565745',
                '0',
                ?,
                'New Member',
                '1365565745',
                '0'
                )
       65 Close stmt    
       65 Prepare   INSERT INTO uc_user_permission_matches  (
                user_id,
                permission_id
                )
                VALUES (
                ?,
                '1'
                )
       65 Execute   INSERT INTO uc_user_permission_matches  (
                user_id,
                permission_id
                )
                VALUES (
                '0',
                '1'
                )

今、最初に投稿されたすべてのもので理解できないことが2つあります。より関連性の高いのは、なぜExecute INSERT INTO uc_user (...呼び出されないのですか? 第二に、なぜコードの残りの部分が実行され (そして何らかの形で uc_user に挿入された user_id を取得し)、それを適切に に渡すのuc_user_permision_matchesでしょうか?

part2 UserCake の内部作業に精通している人にはsssssi、他の場所への参照が見つからないため、この値は何にバインドされていますか?

4

1 に答える 1