如何自动分配行的ID列

时间:2014-02-28 10:51:37

标签: php mysql forms post input

我需要自动设置数据库中一行的ID列,我想知道如何做到这一点,因为目前我必须通过输入字段分配一个ID。

PHP

<?php
    //include db configuration file
    include 'connection.php';
    function user_joined($user_id, $user_name, $user_age, $user_end){
        $user_id = mysql_real_escape_string(htmlentities($user_id));
        $q = "INSERT INTO evenement (id, title, start, end) VALUES
              ('" . $user_id . "', '" . $user_name . "', '" . $user_age . "', '" . $user_end . "')";
        mysql_query($q);
        echo $user_id;
    }

    if(isset($_POST['user_id'], $_POST['user_name'], $_POST['user_age'], $_POST['user_end'], $_POST['action'])){
        $user_id = $_POST['user_id'];
        $user_name = $_POST['user_name'];
        $user_age = $_POST['user_age'];
        $user_end = $_POST['user_end'];
        $action = $_POST['action'];
        if ($action == 'joined'){
            user_joined($user_id, $user_name, $user_age, $user_end);
        }
    }
?>

HTML表单

<form class="form-inline">
    <div id="d1" title="Maak afspraak aan" style="display: none">
        <div class="control-group">
            <label class="control-label">Gebruikers id:</label>
            <div class="controls">
                <input type="text" name="userid" placeholder="Gebruikers ID" id="id" />
            </div>
        </div>
        <div class="control-group">
            <label class="control-label">Title:</label>
                <div class="controls">
                    <input type="text" name="username" placeholder="Titel" id="name" />
                </div>
            </div>
            <div class="control-group">
                <label class="control-label">Starttijd:</label>
                <div class="controls">
                    <input type="text" name="userstart" placeholder="Starttijd" id="start" />
                </div>
            </div>
            <div class="control-group">
                <label class="control-label">Eindtijd:</label>
                <div class="controls">
                    <input type="text" name="userend" placeholder="Eindtijd" id="end" />
                </div>
            </div>
        </div>
    </div>
</form>

1 个答案:

答案 0 :(得分:2)

AUTO_INCREMENT属性与PRIMARY KEY结合使用可自动设置ID。您可以使用SCOPE_IDENTITY()返回此ID,或者如果您切换到更好的PHP SQL选项,则可以使用PDO::lastInsertID来获取最新的ID。

我还想警告你,你有一个非常严重的SQL注入问题,你可以通过使用预准备语句来解决这个问题,也许还需要额外的preg_replace来从查询和表中删除所有不需要的字符。你应该完全去学习一些防止SQL注入的知识。这里有很多专门讨论这个主题的主题,我给你写了这些文章的清单:

我还想推荐您切换到MySQLiPHP PDO,因为您目前正在使用deprecated MySQL database extension