我已经建立了一个使用PHP的ISBN生成器。但是,一旦ISBN号生成它不存储在数据库中。
下面是index.php
<form id="isbn-form" action="generate-isbn.php" method="POST">
<label for="title">Book Title:</label><br>
<input type="text" id="title" name="title"><br>
<label for="author">Author:</label><br>
<input type="text" id="author" name="author"><br>
<button type="submit">Generate ISBN</button>
</form>
<script>
const form = document.getElementById("isbn-form");
form.addEventListener("submit", async (event) => {
event.preventDefault();
// Get the form data
const formData = new FormData(form);
// Send a POST request to the server
const response = await fetch("generate-isbn.php", {
method: "POST",
body: formData,
});
// Get the generated ISBN number
const data = await response.json();
const isbn = data.isbn;
// Display the ISBN number
alert(`Your ISBN number is: ${isbn}`);
});
</script>
这里是isbn.php
function generate_unique_isbn() {
// Generate a unique ISBN
do {
// Generate the first three digits (ISBN agency)
$isbn = rand(100, 999) . "-";
// Generate the language code
$isbn .= rand(0, 9) . "-";
// Generate the book identifier using a cryptographically secure random number generator
$isbn .= bin2hex(random_bytes(4)) . "-";
// Calculate the check digit
$check_digit = 0;
for ($i = 0; $i < strlen($isbn); $i++) {
if ($i % 2 == 0) {
$check_digit += (int)$isbn[$i];
} else {
$check_digit += 3 * (int)$isbn[$i];
}
}
$check_digit = 10 - ($check_digit % 10);
if ($check_digit == 10) {
$check_digit = 0;
}
$isbn .= $check_digit;
// Connect to the database
$conn = new mysqli("localhost", "root", "", "isbn");
// Check if the ISBN is already in the database
$result = $conn->query("SELECT * FROM books WHERE isbn = '$isbn'");
// Close the database connection
$conn->close();
} while ($result->num_rows > 0);
return $isbn;
}
下面是生成的文件-isbn.php
<?php
require "isbn.php";
header("Content-Type: application/json");
// Get the form data
$title = $_POST["title"];
$author = $_POST["author"];
// Generate a unique ISBN number
$isbn = generate_unique_isbn();
// Save the book to the database
$conn = new mysqli("localhost", "root", "", "isbn");
$conn->query("INSERT INTO books (isbn, title, author) VALUES ('$isbn', '$title', '$author')");
$conn->close();
echo json_encode(["isbn" => $isbn]);
?>
为什么值没有通过呢?将书保存到generate-isbn.php中的数据库代码中。值生成了,但只有一个值存储在数据库中。如果我想将生成的值保存在数据库中,我必须删除以前存储在数据库中的值,并运行脚本。然后它就被存储了,在它不存储之后,我必须重新运行这个过程,删除这个值并运行代码。
1条答案
按热度按时间yi0zb3m41#
books表中的
id
列是主键,但您还必须将其设置为AUTO_INCREMENT
,然后您可以插入多行。要执行此操作,您必须首先单击“更改操作”。
然后选中结构面板中的
A_I
复选框。