【问题标题】:What to put in a MySQL auto-increment primary key field when inserting a row?插入行时在 MySQL 自增主键字段中放入什么?
【发布时间】:2016-04-04 19:15:34
【问题描述】:

我是 PHP 新手,在设置代码以自动增加 SQL 的 ID 时遇到了一些麻烦。我知道我正在尝试的方法不是一个很好的方法,并且知道竞争条件等的风险。这将是暂时的,直到我正确地整理了我的其余代码。

有人可以告诉我我在这里做错了什么吗?或者帮我获取有效代码?

我的班级:

<?php

    $user = 'root';
    $pass = '';
    $db = 'testuser';

    $con=mysqli_connect('localhost', $user, $pass, $db) or die('Unable to connect');

    $data = json_decode(trim(key($_POST), '[]'), true);

    $email = $data['email'];
    $name = $data['name'];
    $shortDes = $data['shortDes'];
    $longDes = $data['longDes'];
    $max = mysqli_prepare($con, 'SELECT MAX(society_id) FROM society');
    $society_id = $max + 1;

    $statement = mysqli_prepare($con, 'INSERT INTO society(society_id, name, email, short_des, long_des) VALUES (?, ?, ?, ?, ?)');
    mysqli_stmt_bind_param($statement, 'issss', $societyId, $name, $email, $shortDes, $longDes);
    mysqli_stmt_execute($statement);
    mysqli_stmt_store_result($statement);
    mysqli_stmt_close($statement);

    mysqli_close($con);
?>

关注以下sn-p:

$max = mysqli_prepare($con, 'SELECT MAX(society_id) FROM society');
        $society_id = $max + 1;

        $statement = mysqli_prepare($con, 'INSERT INTO society(society_id, name, email, short_des, long_des) VALUES (?, ?, ?, ?, ?)');
        mysqli_stmt_bind_param($statement, 'issss', $societyId, $name, $email, $shortDes, $longDes);

【问题讨论】:

  • 您没有执行$max 查询,也没有获取任何结果。此外,您应该为 MAX() 函数使用别名
  • 为什么不让 MySQL 为您处理自动递增?因为它就是为此而设计的。
  • 好吧,我将主键设置为自动递增,很确定我做得正确,但它不起作用。我现在会深入研究一下
  • 该死,所以如果我只是跳过自动递增 id 的条目,它会为我生成它?
  • 是的,在 MySQL 中,不需要为自增字段提供值。

标签: php mysql mysqli binding


【解决方案1】:

只需要完全删除自动递增字段的值。

【讨论】:

    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 2012-04-25
    • 2018-03-21
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多