我想进行查询以获取表中的最后一个id(int)以创建一个具有最后一个id + 1的新行,但实际上这只是将所有行设置为具有相同的id
我的代码:
<?php
$servername = "localhost";
$user = "root";
$pass = "dbpass";
$dbname = "site";
$mail = $_POST['mail'];
$password = $_POST['password'];
// Create connection
$conn = mysqli_connect($servername, $user, $pass, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sqlID = "SELECT MAX(id) FROM `login`;";
if ($result = mysqli_query($conn, $sqlID)) {
$id = mysqli_fetch_row($result);
}
settype($id, "int");
$id = $id + 1;
$sql = "INSERT INTO login (`id`,`mail`,`password`)
VALUES ('".$id."','".$mail."','".$password."');";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
&GT;
答案 0 :(得分:1)
mysqli_fetch_row总是返回一个数组,如果只有1个元素也是如此。所以MAX(id)在$ row [0]中。
解决此问题,您也不需要使用settype。
答案 1 :(得分:0)
如果您的id
是自动增量,请更改:
$sql = "INSERT INTO login (`id`,`mail`,`password`)
VALUES ('".$id."','".$mail."','".$password."');";
为:
$sql = "INSERT INTO login (`mail`,`password`)
VALUES ('".$mail."','".$password."');";
然后摆脱从$sqlID
到$id + 1;
的所有代码(为了整洁)