Ошибка Column count doesn't match value count at row 1

126
21 апреля 2022, 06:00

При добавление записи в бд возникает ошибка, может кто-нибудь помочь её исправить? "Ошибка Column count doesn't match value count at row 1"

// подключаемся к серверу
$link = mysqli_connect($host, $user, $password, $database) 
    or die("Ошибка " . mysqli_error($link)); 
 
// экранирования символов для mysql
$licscore = htmlentities(mysqli_real_escape_string($link, $_POST['licscore']));
$field_0 = htmlentities(mysqli_real_escape_string($link, $_POST['field_0']));
 
// создание строки запроса
$query ="INSERT INTO test1 VALUES(NULL, '$licscore','$field_0')";
 
// выполняем запрос
$result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); 
if($result)
{
    echo "<span style='color:blue;'>Данные добавлены</span>";
}
// закрываем подключение
mysqli_close($link);

} ?>

Answer 1

Я понимаю, что вопрос совсем не про это, но в этом коде неверно примерно всё. Буквально каждая строчка неверная или лишняя.

Самое главное, никакого "экранирования" символов для mysql в природе не существует. Это детсадовские сказки, которые, к сожалению, никак не вывести из похапешной тусовки
Поэтому надо выполнять подготовленные запросы вместо этого колупания с "escape"

<?php
// подключаемся к серверу
// выдавать ошибки автоматом, а не бегать за каждым запросом с die mysqli_error
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
$link = mysqli_connect($host, $user, $password, $database); 
// выставляем кодировку, чтобы не бегать потом с вопросами "откуда у меня кракозябры??"
$link->set_charset("utf8mb4");
// создание строки запроса
$query ="INSERT INTO test1 (licscore, field_0) VALUES(?,?)";
// подготавливаем запрос
$stmt =  $link->prepare($query); 
// привязываем к нему переменные
$stmt->bind_param("ss", $_POST['licscore'], $_POST['field_0']); 
//выполняем запрос
$stmt->execute();
// после успешного POST запроса ВСЕГДА должен быть редирект
header("Location: ". $_SERVER['REQUEST_URI']);

Всё, больше в коде ничего не нужно.
Получается, короче, безопаснее, и гораздо осмысленнее

И да, выполняя запрос на вставку, всегда явно надо перечислять те поля, которые мы вставляем.

READ ALSO
Совмещение PHP и JS

Совмещение PHP и JS

Необходимо совместить php и js кодНеобходимо сделать так, чтобы запросы в БД отправлялись только после возникновения события копирования информации...

152
PhpSpreadsheet: распределить строку по ячейкам

PhpSpreadsheet: распределить строку по ячейкам

Есть excel таблица и некоторая строка, нужно определить поместится ли она в первую ячейку (верхняя желтая) и если нет, то разбить ее по строчкам...

140
Проблема с кукой JSESSIONID при повторном запросе

Проблема с кукой JSESSIONID при повторном запросе

Кидаю гет запрос, чтобы установить новый сеанс и записать куки в файл

103
Как работает такое выражение php

Как работает такое выражение php

Подскажите как работает такая строка: $app = require('/lib/base

223