mysqli插入行ID

时间:2018-03-26 08:18:36

标签: php mysql

我正在努力学习PHP& Mysqli在尝试回显/打印行id(或在本例中为“ref”)时遇到一些问题为H2(其中它表示“FORM”)。

另外,当我添加一个新行时,它应该在数据库中获得下一个id。

我希望这是有道理的。

很抱歉,如果已发布。找不到它。

<?php
//server with default setting (user 'root' with no password) */
define('DB_SERVER', 'host');
define('DB_USERNAME', 'user');
define('DB_PASSWORD', '****');
define('DB_NAME', 'database');

$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);

if (!$link) {
die('could not connect: ' . mysqli_connect_error());
}

$db_selected = mysqli_select_db($link, DB_NAME);

if (!$db_selected) {
die('Cant use ' . DB_NAME . ': ' . mysqli_connect_error());
}


if ($_SERVER["REQUEST_METHOD"] == "POST") {

$value_1 = $_POST['column_1'];
$value_2 = $_POST['column_2'];
$value_3 = $_POST['column_3'];

$sql = "INSERT INTO maskiner (column_1, column_2, column_3) VALUES ('$value_1', '$value_2', '$value_3')";

if (!mysqli_query($link, $sql)) {
    die('ERROR: ' . mysqli_connect_error());
}

mysqli_close($link);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test2</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
    <style type="text/css">
        body{ font: 14px sans-serif; }
        .wrapper{ width: 350px; padding: 20px; }
    </style>
</head>
<body>
    <div class="wrapper">
        <h2>FORM</h2>
        <p>Please fill this form to create an account.</p>
        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
            <div class="form-group">
                <label>Column_1</label>
                <input type="text" name="column_1"class="form-control" value="<?php echo $value_1; ?>">
                <span class="help-block"></span>
            </div>      
            <div class="form-group">
                <label>Column_2</label>
                <input type="text" name="column_2"class="form-control" value="<?php echo $value_2; ?>">
                <span class="help-block"></span>
            </div> 
            <div class="form-group">
                <label>Column_3</label>
                <input type="text" name="column_3"class="form-control" value="<?php echo $value_3; ?>">
                <span class="help-block"></span>
            </div> 
            <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Submit">
                <input type="reset" class="btn btn-default" value="Reset">
            </div>
        </form>
    </div>    
</body>
</html>

3 个答案:

答案 0 :(得分:1)

我不确定您的问题是否正确,但请尝试使用

在数据库中创建表格
{{1}}
这样,您的ID行将自动递增,您不必提供值

答案 1 :(得分:1)

如果我理解你需要最后一个插入ID。如果这是真的,你可以使用代码

$last_id = mysqli_insert_id($link);

上面的代码获取最后插入的增量ID。

注意:您的表中的id列,必须是增量属性

答案 2 :(得分:0)

如果您想提前知道下一个ID,则无法使用

$next_id = mysqli_insert_id($link)+1;

因为当你下次使用mysqli_insert_id()时关闭mysql连接,你得到0。

您可以使用查询:从maskiner中选择max(id)+1作为next_id; ,但是如果删除最后插入的行,则会得到错误的ID。为避免这种情况,您可以在sql insert语句中分配next_id:

    $sql = "INSERT INTO maskiner (id, column_1, column_2, column_3) VALUES ('$next_id','$value_1', '$value_2', '$value_3')";