У меня есть страница, которая изменяет большое количество переменных в моей базе данных MySQL, и до сих пор все они отлично работали, но теперь все запросы внутри одиночные логические ворота перестали работать без видимых причин.PHP/MySQL запрос перестает работать без видимых причин
Я подтвердил следующее:
- Переменная размещена и используется в «если» заявление ворот как было задумано
- Логика ворот срабатывает по назначению (я могу повторить материал и т.д. внутри него).
- Установлено соединение с базой данных, я успешно выполняю запросы различных типов до и после этого логического элемента с одной и той же переменной соединения.
- Пользователь подключения имеет ВСЕ ПРИВЕДЕНЫ, вышеупомянутые запросы, связанные с этим логическим затвором, успешно используют схожие функции.
Вот логика ворот:
if (!empty($_POST["addqual"])){
$coladqual = $_POST["addqual"];
$sqlf = "ALTER TABLE users ADD UNIQUE ('$coladqual') INT(2) NOT NULL";
$conn->query($sqlf);
$sqlc = "INSERT INTO competencebonus (competence,bonus)
VALUES ($coladqual,0)";
$conn->query($sqlc);
}
Я пытался несколько изменений, но они, кажется, не выполнять, независимо от того, что я делаю. У меня есть как минимум 20 других запросов в других логических воротах до и после этих двух, и между ними, по-видимому, практически нет разницы, кроме этих двух, которые просто не работают вообще.
EDIT - Вот ошибка (спасибо всем, кто предоставил мне синтаксисом отчет об ошибке)
У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии сервера MySQL, для правильного синтаксиса для использования рядом с '' TestAA '') INT (2) NOT NULL UNIQUE 'в строке 1
Что меня поразило, так это то, что только закрывающая скобка вокруг ввода сообщения (TestAA). Предполагается, что оба они или нет?
Я попытался изменить синтаксис и получил следующее сообщение об ошибке:
Дублировать запись '0' для ключа 'TestAB'
с синтаксисом был:
$sqlf = "ALTER TABLE users ADD `$coladqual` INT(2) NOT NULL UNIQUE";
FINAL EDIT:
Сделал работу. Удалил оператор «NOT NULL», как рекомендовал Джефф Пакет II. Каким-то образом это в сочетании с удалением скобок и использованием обратных шагов вместо апострофа заставило эту вещь работать. Спасибо за те из вас, кто имел терпение, чтобы помочь мне в этом.
Проверка ошибок всегда должна быть первой. Самообразование - самое сильное. – Rottingham
Вы должны проверить, был ли запрос выполнен успешно. Если что-то не удается, '$ conn' сможет сообщить об этом. (И вы должны указать, используете ли вы PDO или MySQLi.) – Arjan
MySQLi. Как я могу добавить отчет об ошибках к этим запросам? Все примеры, которые я нашел в течение прошлого года, используют совершенно другой формат запроса. – noobequaltotrue