だから、私は 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
、他の場所への参照が見つからないため、この値は何にバインドされていますか?