私はユーザログインと電子メールによる登録でWebサイトを設計しています。ユーザがアカウントを登録すると、そのユーザレコードがデータベースに正しく挿入されます"users"テーブル。PHP MySQLiがテーブルにデータを挿入しない準備済みの文
しかし、サイトのすべてのメンバーの名簿の2番目のテーブルに挿入するときに作成されたユーザーIDをプルしようとすると(これはゲーム用のものです)、ユーザーIDを0として挿入します自分のIDがそのユーザーの「ユーザー」表にあるかどうかにかかわらず、ロスタ表に表示されます。
HERESに私のコード:私は私に頭痛を引き起こし、このセクション上の任意のベアリングを持っていないコードは省略の特定の変数やセクションを残しているセキュリティ上の理由から
if($insert_stmt = $db->prepare("INSERT INTO users (username, password, email, date, actcode) VALUES (?, ?, ?, ?, ?)"))
{
$insert_stmt->bind_param('sssss', $username, $password, $email, $date, $actcode);
$stmt = $db->prepare("SELECT id FROM users WHERE email = ?");
if($stmt)
{
$stmt->bind_param('s', $email);
$stmt->execute();
$stmt->fetch();
$stmt->store_result();
$stmt->bind_result($ui);
}
$stmt = $db->prepare("INSERT INTO roster (userid, joindate) VALUES (?, ?)");
if($stmt)
{
$stmt->bind_param('ss', $ui, $date);
$stmt->execute();
}
if(!$insert_stmt->execute()) {
header('Location: error.php?err=Registration failure: INSERT');
}
}
。
"userid"カラムの下の "roster"テーブルに、そのユーザアカウントの "users"から新たに作成された "id"を挿入しない理由を理解できません。
はまた、単に何かをテストするために、私も行って、セッション変数
ライン$stmt->store_result($ui);
後に直接
$_SESSION['uid'] = $ui;
を設定して、私のindex.phpファイルでそれをエコーし、セッション変数も0として表示されます。
コードブロックが実行されていますか? mysqli_error()を追加して、何かが失敗しているかどうかを確認する必要があります。静かにすべてが失敗するように見える。 – Mike
コードにデバッグ文を追加できますか? print_r($ stmt)の出力は何ですか? – Edward