От PHP до MySQL ошибка bind_param () - PullRequest
0 голосов
/ 12 марта 2020

Я не могу распечатать ошибку и не могу найти идеи из inte rnet. База данных имеет ключ, userIP и дату. сегмент кода:

$last = $conn->query("SELECT LAST_INSERT_ID();");
if (strcmp($last, "<empty string>") == 0) {
    $index = 0;
} else {
    $index = $last + 1;
}

$stmt = $conn->prepare("INSERT INTO Users (key, userIP, date) VALUES (?, ?, ?)");
$stmt->bind_param("iss", $key, $ip, $date);

$key = $index;
$ip = $_SERVER['REMOTE_ADDR'];
$date = date('Y-m-d H:i:s');

Идея состоит в том, чтобы я сохранил последний «ключ» и добавил к нему 1. То есть это не работает, если база данных пуста. Я искал его часами, поэтому у меня закончились идеи.

1 Ответ

0 голосов
/ 12 марта 2020

Вам нужно получить результаты запроса.

$result = $conn->query("SELECT LAST_INSERT_ID();");
$row = $result->fetch_row();
$last = $row[0];
if ($last == "") {
    $index = 0;
} else {
    $index = $last + 1;
}

Но вам не нужно выполнять запрос для этого, для него есть встроенная функция:

$last = $conn->insert_id;

Другая проблема заключается в том, что key является зарезервированным словом, поэтому вам нужно заключить его в кавычки.

$stmt = $conn->prepare("INSERT INTO Users (`key`, userIP, date) VALUES (?, ?, ?)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...