2014-12-07 3 views
0

Я работаю над небольшим проектом для своего преподавателя английского языка, и я впервые делаю что-то с базами данных. У меня есть таблица под названием Books с четырьмя столбцами: Id, Title, Link, and Rating. Идея состоит в том, что пользователь может представить название книги, которую они недавно прочитали, ссылку на нее на goodreads и рейтинг из 5 звезд. (У меня пока нет подтверждения ввода, но я добавлю, что после того, как я закончу свою текущую проблему.)PHP добавить уникальный идентификатор в SQL

Проблема возникает в столбце Идентификатор. Я пытаюсь с PHP и SQL захватить самый большой идентификатор во всей таблице, а затем установить идентификатор недавно добавленной книги (строки), чтобы он был больше, чем старый.

Вот мой 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(); 

?> 

Когда я бегу SELECT MAX(Id) FROM Books на вкладке PHPMyAdmin SQL, я получаю 2, что является правильным.

Если вы заметили какие-либо проблемы с безопасностью (помимо подтверждения ввода), сообщите мне об этом.

+2

Почему бы не просто увеличить его? – Ghost

ответ

0

Вам не нужно сначала находить наибольшее число в таблице, а затем добавить к нему один номер, а затем отправить. В вашей таблице данных в mysql поменять идентификатор на первичный ключ и сделать его автоматическим приращением true, которое всегда будет вставлять уникальный и увеличенный идентификатор.

синтаксис же

ALTER TABLE имя_таблицы ADD ID INT PRIMARY KEY AUTO_INCREMENT;

+0

Спасибо! Отлично! – PullJosh

+0

Добро пожаловать :) –

Смежные вопросы