2017-02-18 3 views
-2

На моем сервере XAMPP у меня есть таблица базы данных на phpMyAdmin. В этой таблице у меня есть несколько столбцов, а один из них - столбец id (целое число).PHP-функция не увеличивает int так, как должно быть

Я хочу получить идентификатор последнего добавленного предмета, увеличить его на единицу, а затем присвоить его новому элементу, который добавляет функция в таблицу.

Проблема заключается в том, что всякий раз, когда есть новый элемент, он автоматически присваивается 1 в качестве идентификатора, ничего выше 1.

$sql = "SELECT * FROM items"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while ($row = $result->fetch_assoc()) { 
     if($_SESSION["increment"] == "yes"){ 
      $_SESSION["id"] = $row["id"]; 
     }else 
      $_SESSION["id"]=$_SESSION["id"]+1; 
    } 
} else { 
    $_SESSION["id"] = 1; 
} 
+1

[сообщение об ошибке] (http://php.net/manual/en/function.error-reporting.php) сказал что? и 'mysqli_error ($ conn)'? –

+1

Все это кажется неправильным направлено ко мне – Strawberry

ответ

0

Мне кажется, что вам нужно хорошо известную функциональность AUTO_INCREMENT встроенную в базе данных MySQL , Просто укажите в своей схеме базы данных для своей таблицы этот столбец - тип столбца AUTO_INCREMENT, и он будет автоматически увеличиваться на 1 при каждой новой вставке в таблицу.

+0

Да, но мне нужен и сам идентификатор функции для дальнейших действий. – Ido

+0

Хорошо, вы получите его с помощью mysqli-> insert_id (http://php.net/manual/en/mysqli .Вставьте-id.php) – sbrbot

0

Это даст вам последний инкремент Id.

$sql = "SELECT id FROM items order by id DESC LIMIT 0,1"; 

Тогда вы не хотите иметь цикл while, чтобы найти идентификатор последнего инкремента.

0

error reporting сказал что? и mysqli_error($conn)?

- Фред-II-

  • Вышеописанный запрос на Фред -ii- подводит итог, если ваш ->num_rows возвращается ноль или не число (false), то у вас есть SQL, поэтому вам нужно проверить свой error logs и проверить свой database connection.

  • Вы начали свою сессию с session_start?

  • Вы предполагаете, что первые else звонки без скобок, только с использованием одной следующей строки, $_SESSION["id"]=$_SESSION["id"]+1;?

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