Выберите Last_insert_id () периодически возвращает 0Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Выберите Last_insert_id () периодически возвращает 0

Сообщение Anonymous »

Я искал много подобных вопросов, хотя я не могу найти ничего, что периодически < /strong> возвращает 0 < /p>

**** РЕДАКТИРОВАТЬ ***** < /p>

Я с тех пор пробовал тестирование с новой таблицей только с двумя столбцами, что я могу иметь также около 1 в 50 раз. Только сейчас смог протестировать на платном хостинговом сервере, и я не смог повторить свою проблему < /p>

Я предполагаю, что проблема моей быть специфической для этого веб -хоста. < /p>

Проблема: < /strong> < /p>

Получил «Последний ID». я. < /p>

localhost, все работает нормально без проблем. Проблема возникает только тогда, когда мой веб -сайт размещен на сервере. < /P>

SELECT LAST_INSERT_ID() intermittently returns 0

$PDOconnection->lastInsertId(); Always returns correct ID
< /code>

Мне нужно надежно получить последний вставленный идентификатор на основе подключения, поскольку он важен для процесса проверки моего веб-сайта при создании порядка покупки в базе данных. /> Вставка SQL всегда работает нормально, и база данных показывает новую запись. < /li>
Переключение PHP -версии не разрешает проблему < /li>
Веб -хост, который я использую, является бесплатным службой хостинга, которую я использую для Live
Testing Creats < /li>
Время загрузки страницы. /> < /ul>

Я раздевал весь код (как ниже), чтобы проверить в простоте. Проблема по -прежнему остается < /p>

Я не могу тренироваться там, где лежит моя проблема. < /P>

include_once "php/config.php";

$cookie_id = 0;

// Time of checkout
$time = gmdate("d/m/Y h:i:s");

// Create new purchase order
$sql_insert = "INSERT INTO user_purchases (cart_id, timestamp) VALUES (:cookie_id, :time)";

$stmt_insert = $PDOconnection->prepare($sql_insert);
$stmt_insert->bindParam(':cookie_id', $cookie_id, PDO::PARAM_STR);
$stmt_insert->bindParam(':time', $time, PDO::PARAM_STR);
$stmt_insert->execute();

$checkout_id_0 = $PDOconnection->lastInsertId();

// Get the primary key id of the last inserted item on per-connection basis
$sql_last_id = "SELECT LAST_INSERT_ID()";
$stmt_last_id = $PDOconnection->prepare($sql_last_id);
$stmt_last_id->execute();
$r_last_id = $stmt_last_id->fetch(PDO::FETCH_ASSOC);

$checkout_id_1 = $r_last_id['LAST_INSERT_ID()'];

echo $checkout_id_0 . " " . $checkout_id_1; // I echoed out to observe results
< /code>

Реальный пример результатов для 10 запросов в ряду (просто, просто освежив страницу). Я повторил результаты рядом. < /p>

checkout_id_0 $checkout_id_1

connection config: < /p>

$PDOconnection = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $sql_username, $sql_password);

// Set PDO error mode to exception
$PDOconnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Set PDO Attribute to force native prepared statements
$PDOconnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);


Подробнее здесь: https://stackoverflow.com/questions/467 ... -returns-0
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»