如何将输出查询从mySQL放到php int变量中

时间:2016-08-30 13:47:08

标签: php mysql

我想进行查询以获取表中的最后一个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;

2 个答案:

答案 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;的所有代码(为了整洁)