在mysql和php中最后插入一行的id后加1


Add 1 to a last inserted id of a row in mysql and php

我想在数据库中的列的最后一个插入值上添加一个。我没有得到任何错误,但查询没有在最后插入的值上加1。

注释;我用MAX(id)来获取最大id,但它没有添加1。我做错了什么?

<?php
session_start();
ob_start();
if (isset($_POST['submit'])) {
    $pin = htmlspecialchars(trim($_POST['pin']));
    $surName = htmlspecialchars(trim($_POST['surName']));
    $firstName = htmlspecialchars(trim($_POST['firstName']));
    $otherName = htmlspecialchars(trim($_POST['otherName']));
    $email = htmlspecialchars(trim($_POST['email']));
    $passWord = md5(trim($_POST['passWord']));
    $confirmPass = md5(trim($_POST['confirmPass']));
    $date_added = date('Y.m.d - H:i:s');
    $year = (100 . 'L');
    $studentId = 201600001;
   if ((empty($pin && $surName && $firstName && $otherName &&      $email && $passWord && $confirmPass) == false) && ($passWord) == ($confirmPass))
{
 include "dbconnect.php";
 $sql = "SELECT * FROM `sono` WHERE `pin`='$pin'";   
 $check = mysqli_query($dbconnect, $sql);
 $numrow = mysqli_num_rows ($check);
 if ($numrow == 1)
 {
     $rows=mysqli_fetch_assoc($check);
     $Email = $rows['eMail'];
     if ($Email == false)
     {
         $query = "SELECT * FROM `sono` WHERE `eMail`='$email'";
         $check = mysqli_query($dbconnect, $query);
         $numrow = mysqli_num_rows($check);
         if ($numrow == 0)
         {
                 $sql = "INSERT INTO `sono_nextofkin` (`eMail`) VALUES ('$email')";
                 mysqli_query($dbconnect, $sql);
                 $query = "INSERT INTO `sono_0level_results` (`eMail`) VALUES ('$email')";
                 mysqli_query($dbconnect, $query);
                 $query = "UPDATE `sono` SET `surName`='$surName', `firstName`='$firstName', `otherName`='$otherName', `eMail`='$email', `passWord`='$passWord', `confirmPass`='$confirmPass', `date_added`='$date_added', `year`='$year', `studentid`='$studentId' WHERE `pin`='$pin'";
                 mysqli_query($dbconnect, $query);
                 $max = "SELECT * MAX(`studentid`) FROM `sono`";
                 $max2 = mysqli_query ($dbconnect, $max);
                 $update = "UPDATE `sono` SET `MAX(`studentid`) = '$studentId' + 1 WHERE `pin`='$pin'";
                 mysqli_query ($dbconnect, $update);                     
                 $query = "SELECT `id` as idmax FROM `sono`";
                 $result = mysqli_query($dbconnect, $query) or die (mysqli_error($dbconnect));
                 $rowa = mysqli_fetch_array($result);
                 $rw = $rowa['idmax'];
                 $rwo = $rw+1;
                 $rwo = str_pad($rwo,4,'0',STR_PAD_LEFT);
                 $sql = "UPDATE `sono` SET `id`='$rwo' WHERE `pin`='$pin'";
                 $result = mysqli_query($dbconnect, $sql);
                 $_SESSION['surName'] = $surName;
                 $_SESSION['firstName'] = $firstName;
                 $_SESSION['otherName'] = $otherName;
                 $_SESSION['email'] = $email;
                 $_SESSION['passWord'] = $passWord;

                 $msg= "<p style = 'color: green; padding-left: 0'>Registration successful,<a href='passport.php'> >>>Click here to proceed<<<</a></p>";
                 } else
                 $msg= "<p style = 'color: red; padding-left: 0'>Email already used, use another valid email to register</p>";
                 } else
                 $msg= "<p style = 'color: red; padding-left: 0'>The pin has been used</p>";
                 } else
                 $msg= "<p style = 'color: red; padding-left: 0'>The pin enter does not exist</p>";
                 } else
                 $msg= "<p style = 'color: red; padding-left: 0'>Please enter your names, pin, email and password to start registration</p>";
  }
  ?>

你应该像一样

$update = "UPDATE `sono` SET `studentid` = MAX(`studentid`) + 1 WHERE `pin`='$pin'";

从SQL查询中使用LAST_INSERT_ID()。

您也可以使用mysqli_insert_id()来使用PHP获取它。