Я пытаюсь понять, почему мой первый отчет о подготовке работает очень хорошо, но мой второй нет. Фактический синтаксис INSERT INTO выглядит корректно и работает, когда я заменяю числа и размещаю их в консоли mysql, но оператор prepare возвращает false.Ошибка в mysqli-> make with insert statement
Просто, чтобы убрать простые вопросы; $ db_table_prefix == "uc_", и все переменные инициализируются. Кроме того, первый оператор устанавливает $ results == 0 (EDIT: это была моя ошибка, это действительно 0, а не 1).
global $mysqli,$db_table_prefix;
$stmt = $mysqli->prepare("SELECT COUNT(id) FROM ".$db_table_prefix."attempts WHERE ((exp_m = ?) AND (exp_n = ?) AND (max_base <= ?))");
$stmt->bind_param("iii", $m, $n, $this->max_base);
$stmt->execute();
$stmt->bind_result($results);
$stmt->fetch();
if ($results < 1)
{
$stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."attempts (exp_m, exp_n, base_x, max_base) VALUES (?,?,?,?)");
$stmt->bind_param("iiii", $m, $n, $x, $this->max_base);
.....
}
Я включил структуру таблицы, на всякий случай это проблема.
mysql> describe uc_attempts;
+----------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+----------------+
| exp_m | bigint(20) unsigned | NO | | NULL | |
| exp_n | bigint(20) unsigned | NO | | NULL | |
| base_x | bigint(20) unsigned | YES | | NULL | |
| max_base | bigint(20) unsigned | NO | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
+----------+---------------------+------+-----+---------+----------------+
Я уверен, что я просто отсутствует что-нибудь простое, но через несколько дней глядя на код, я должен спросить. Заранее спасибо за помощь. Пожалуйста, дайте мне знать, если есть какая-либо другая информация, которую я должен включить.
Какая ошибка? – Jim
Во второй инструкции подготовки он возвращает False. – Joe
Включить отчет об ошибках и посмотреть, выбрасывает ли он исключение – naththedeveloper