Количество столбцов не соответствует количеству значений в строке 1. Ошибка с подготовленными операторами в PHP. ⇐ Php
Количество столбцов не соответствует количеству значений в строке 1. Ошибка с подготовленными операторами в PHP.
Я столкнулся с
Количество столбцов не соответствует количеству значений в строке 1
Ошибка при попытке вставить данные в базу данных с использованием подготовленных операторов и привязки параметров в PHP. Я проверил код и убедился, что количество заполнителей в моем операторе SQL соответствует количеству связываемых переменных, но ошибка не устранена.
Вот соответствующий фрагмент кода:
// ... (код подключения и получения данных) $sql = "INSERT INTO `rate_company` (`comname`, `yourfunction`, `secofact`, `country`, `Company_size`, `email`, `score`, `q1`, `q3`, `q4`, `q5`, `q6`, `q7`, `q8`, `q9`, `q10`, `q11`, `q12`, `q13`, `q14`, `q15`, `q16`, `q17 `, `q18`, `q19`, `q20`) ЗНАЧЕНИЯ (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, СЕЙЧАС())"; if ($stmt = $conn->prepare($sql)) { // ... продолжаем привязку параметров и выполнение } еще { echo "Ошибка: не удалось подготовить оператор: " . $conn-> ошибка; Выход; } // Привязка параметров $stmt->bind_param("sssssssssssssssssssssss", $comname, $yourfunction, $secofact, $country, $Company_size, $email, $score, $q1, $q3, $q4, $q5, $q6, $q7, $ q8, $q9, $q10, $q11, $q12, $q13, $q14, $q15, $q16, $q17, $q18, $q19, $q20); // ... (выполнение и закрытие оператора) Что я пробовал:
[*]Дважды проверили количество заполнителей в операторе SQL и количество переменных в вызовеbind_param. [*]Удалены ненужные заполнители из оператора SQL (например, для столбцы с автоматическим приращением). [*]Проверено, что типы данных связываемых переменных соответствуют соответствующие типы столбцов в таблице базы данных.
Что мне еще неясно:
[*]
Что может быть причиной несоответствия, даже если заполнитель и количество переменных кажется правильным?
[*]
Есть ли какие-либо дополнительные проверки или соображения, которые мне следует выполнить? убедиться, что подсчеты точны?
Будем очень признательны за любые идеи или предложения по устранению этой проблемы.
Структура таблицы базы данных
СОЗДАТЬ ТАБЛИЦУ `rate_company` ( `id` int(11) НЕ НУЛЬ, `comname` varchar(150) НЕ NULL, `yourfunction` varchar(150) NOT NULL, `secofact` varchar(150) НЕ НУЛЬ, `country` varchar(150) НЕ NULL, `Company_size` varchar(150) НЕ NULL, `email` varchar(150) НЕ NULL, `score` varchar(150) НЕ NULL, `q1` varchar(200) НЕ НУЛЬ, `q2` varchar(200) НЕ НУЛЬ, `q3` varchar(200) НЕ НУЛЬ, `q4` varchar(200) НЕ НУЛЬ, `q5` varchar(200) НЕ НУЛЬ, `q6` varchar(200) НЕ НУЛЬ, `q7` varchar(200) НЕ НУЛЬ, `q8` varchar(200) НЕ НУЛЬ, `q9` varchar(200) НЕ НУЛЬ, `q10` varchar(200) НЕ НУЛЬ, `q11` varchar(200) НЕ НУЛЬ, `q12` varchar(200) НЕ НУЛЬ, `q13` varchar(200) НЕ НУЛЬ, `q14` varchar(200) НЕ НУЛЬ, `q15` varchar(200) НЕ НУЛЬ, `q16` varchar(200) НЕ НУЛЬ, `q17` varchar(200) НЕ НУЛЬ, `q18` varchar(200) НЕ НУЛЬ, `q19` varchar(200) НЕ НУЛЬ, `q20` varchar(200) НЕ НУЛЬ, Метка времени `rate_date` НЕ NULL ПО УМОЛЧАНИЮ current_timestamp() ) ENGINE=InnoDB CHARSET ПО УМОЛЧАНИЮ=latin1 COLLATE=latin1_swedish_ci;
Я столкнулся с
Количество столбцов не соответствует количеству значений в строке 1
Ошибка при попытке вставить данные в базу данных с использованием подготовленных операторов и привязки параметров в PHP. Я проверил код и убедился, что количество заполнителей в моем операторе SQL соответствует количеству связываемых переменных, но ошибка не устранена.
Вот соответствующий фрагмент кода:
// ... (код подключения и получения данных) $sql = "INSERT INTO `rate_company` (`comname`, `yourfunction`, `secofact`, `country`, `Company_size`, `email`, `score`, `q1`, `q3`, `q4`, `q5`, `q6`, `q7`, `q8`, `q9`, `q10`, `q11`, `q12`, `q13`, `q14`, `q15`, `q16`, `q17 `, `q18`, `q19`, `q20`) ЗНАЧЕНИЯ (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, СЕЙЧАС())"; if ($stmt = $conn->prepare($sql)) { // ... продолжаем привязку параметров и выполнение } еще { echo "Ошибка: не удалось подготовить оператор: " . $conn-> ошибка; Выход; } // Привязка параметров $stmt->bind_param("sssssssssssssssssssssss", $comname, $yourfunction, $secofact, $country, $Company_size, $email, $score, $q1, $q3, $q4, $q5, $q6, $q7, $ q8, $q9, $q10, $q11, $q12, $q13, $q14, $q15, $q16, $q17, $q18, $q19, $q20); // ... (выполнение и закрытие оператора) Что я пробовал:
[*]Дважды проверили количество заполнителей в операторе SQL и количество переменных в вызовеbind_param. [*]Удалены ненужные заполнители из оператора SQL (например, для столбцы с автоматическим приращением). [*]Проверено, что типы данных связываемых переменных соответствуют соответствующие типы столбцов в таблице базы данных.
Что мне еще неясно:
[*]
Что может быть причиной несоответствия, даже если заполнитель и количество переменных кажется правильным?
[*]
Есть ли какие-либо дополнительные проверки или соображения, которые мне следует выполнить? убедиться, что подсчеты точны?
Будем очень признательны за любые идеи или предложения по устранению этой проблемы.
Структура таблицы базы данных
СОЗДАТЬ ТАБЛИЦУ `rate_company` ( `id` int(11) НЕ НУЛЬ, `comname` varchar(150) НЕ NULL, `yourfunction` varchar(150) NOT NULL, `secofact` varchar(150) НЕ НУЛЬ, `country` varchar(150) НЕ NULL, `Company_size` varchar(150) НЕ NULL, `email` varchar(150) НЕ NULL, `score` varchar(150) НЕ NULL, `q1` varchar(200) НЕ НУЛЬ, `q2` varchar(200) НЕ НУЛЬ, `q3` varchar(200) НЕ НУЛЬ, `q4` varchar(200) НЕ НУЛЬ, `q5` varchar(200) НЕ НУЛЬ, `q6` varchar(200) НЕ НУЛЬ, `q7` varchar(200) НЕ НУЛЬ, `q8` varchar(200) НЕ НУЛЬ, `q9` varchar(200) НЕ НУЛЬ, `q10` varchar(200) НЕ НУЛЬ, `q11` varchar(200) НЕ НУЛЬ, `q12` varchar(200) НЕ НУЛЬ, `q13` varchar(200) НЕ НУЛЬ, `q14` varchar(200) НЕ НУЛЬ, `q15` varchar(200) НЕ НУЛЬ, `q16` varchar(200) НЕ НУЛЬ, `q17` varchar(200) НЕ НУЛЬ, `q18` varchar(200) НЕ НУЛЬ, `q19` varchar(200) НЕ НУЛЬ, `q20` varchar(200) НЕ НУЛЬ, Метка времени `rate_date` НЕ NULL ПО УМОЛЧАНИЮ current_timestamp() ) ENGINE=InnoDB CHARSET ПО УМОЛЧАНИЮ=latin1 COLLATE=latin1_swedish_ci;
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение