【问题标题】:Why my code no Insert into some tables?为什么我的代码没有插入到某些表格中?
【发布时间】:2015-02-22 05:51:25
【问题描述】:

我想在每个表中为刚注册的用户创建一行,id 必须与users 表中的相同。我试图使用$mysqli->insert_id 方法,但它没有用。代码只有INSERT INTO我的用户表...谁能告诉我我的代码的问题并解释$mysqli->insert_id,好吗? :(

谢谢。

PHP 代码

<?php
include_once("../init.php");

if (isset($_POST)) {
$username       = trim($_POST['username']);
$password       = crypt(trim($_POST['password']), 'st');
$email          = trim($_POST['email']);
$email_code     = md5($username + microtime());
$insert_stmt = $mysqli->prepare("INSERT INTO users (username, password, email, email_code, created) VALUES (?, ?, ?, ?, NOW())");
$insert_stmt->bind_param('ssss', $username, $password, $email, $email_code);
        if (! $insert_stmt->execute()) {
                header('Location: ../error.php?err=Registration failure: INSERT');
        } else {
            $whatajoke = $insert_stmt->insert_id;   
            $mysqli->query("INSERT INTO login_attempts (id) VALUES ('$whatajoke')");
            $mysqli->query("INSERT INTO personal_detail (id, username) VALUES ('$whatajoke', '$username')");
            $mysqli->query("INSERT INTO ip (id) VALUES ('$whatajoke')");
            //email('htmlemail.php');
            header('Location: ../register_success.php');
        }
}
$mysqli->close();
?>

【问题讨论】:

  • 你在哪里调用新的mysqli?
  • $whatajoke = $insert_stmt-&gt;insert_id;
  • 你没有 $insert_stmt = new mysqli("localhost", "my_user", "my_password", "world"); ?
  • 您为什么不先阅读手册?!你不应该问 SO,只是因为你懒得看手册。

标签: php sql mysqli


【解决方案1】:

insert_id 仅在执行插入查询后才有意义。你以前用过。另一个条件是您的表有一个自动增量列。

它是如何工作的:PHP 将查询发送到 mysql,mysql 插入该行并为自动递增的 id 列分配一个值。如果您需要此 id 以便稍后在代码中引用新记录,请使用 insert_id

【讨论】:

    猜你喜欢
    • 2020-05-04
    • 2017-09-08
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多