【问题标题】:PHP add unique Id to SQLPHP向SQL添加唯一ID
【发布时间】:2014-12-07 13:08:47
【问题描述】:

我正在为我的英语老师做一个小项目,这是我第一次对数据库做任何事情。我有一个名为Books 的表,有四列:Id, Title, Link, and Rating。这个想法是,用户可以提交他们最近读过的书的标题、goodreads 上的链接以及 5 颗星的评分。 (我还没有任何输入验证,但我会在完成当前问题后添加它。)

问题发生在 Id 列中。我正在尝试使用 PHP 和 SQL 来获取整个表中最大的 Id,然后将新添加的书(行)的 Id 设置为比旧最大的多一个。

这是我的 HTML:

<form action="bookSubmit.php" method="post">
    Book Title: <input type="text" name="title"><br>
    Goodreads Link: <input type="text" name="link"><br>
    Rating (1 to 5): <input type="number" name="rating" min="1" max="5"><br>
    <input type="submit" value="submit">
</form>

和 bookSubmit.php:

<?php

$servername = "localhost";
$username = "[My username]";
$password = "[My password]";
$dbname = "PullJosh_books";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 


$newId = $conn->query("SELECT MAX(Id) FROM Books"); // Replacing this line with $newId = and then manually typing in the current highest Id works (meaning everything else is all set).
$newId++;

$sql = "INSERT INTO Books (Id, Title, Link, Rating)
VALUES ('". $newId ."', '" . $_POST['title'] . "', '" . $_POST['link'] . "', '" . $_POST['rating'] . "')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

?>

当我在 phpmyadmin sql 选项卡中运行 SELECT MAX(Id) FROM Books 时,我得到 2,这是正确的。

如果您碰巧发现任何安全问题(除了不验证输入),请也告诉我。

【问题讨论】:

  • 为什么不自动递增呢?

标签: php sql unique


【解决方案1】:

您不需要先在表格中找到最大的数字,然后将其添加一个数字然后提交。在 mysql 的数据表中,将 id 转换为主键并使其自动递增 true,这将始终插入唯一且增加的 id。

语法相同

ALTER TABLE tbl_name ADD id INT PRIMARY KEY AUTO_INCREMENT;

【讨论】:

  • 谢谢!完美运行!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
  • 2020-10-01
  • 2012-09-23
  • 2014-02-03
相关资源
最近更新 更多