Всем привет! Глаз замылился уже, не могу разобраться) Помогите, пожалуйста, понять почему данные не записываются в БД... Передаю некие данные аяксом: Код (Javascript): var para1 = document.getElementById("test1"); var test1 = para1.textContent; var para2 = document.getElementById("test2"); var test2 = para2.textContent; $.ajax({ type: "POST", url: 'sendData.php', data: {q1:test1,q2:test2}, success: function(){ alert ("Success"); } }) файл sendData.php должен принять эти данные и записать их в БД: PHP: global $conn; if ($_SERVER['REQUEST_METHOD']==='POST'){ if(isset($_POST['q1']) && isset($_POST['q2'])){ $q1 = $_POST['q1']; $q2 = $_POST['q2']; $user_query = "INSERT INTO USER VALUES "." (NULL, '$q1', '$q2', '$q1', '$q2')"; $res = $conn->query($user_query); if (!$res) echo "Сбой при вставке данных: $user_query<br>". $conn->error . "<br><br>"; }} Аякс запрос выполняется без ошибок, а на стороне сервера тишина
На «глаз замылился» не тянет. Скорее бревно в глаз попало. Нет перечисления имен полей (практически всегда используется), данные не экранируются перед вставкой в запрос.
так ты сервер и не слушаешь. alert("Success"); не срабатывает? используешь версию jQuery до 1.9.0.? иначе я бы попробовал заменить type: "POST" , на method: "POST" А и еще. ты NULL пытаешься писать в индексный столбец
alert срабатывает. Данные на сервер передаются. Пробовал выводить значения через echo ".$_POST['q1']." and ".$_POST['q2'] и смотреть результат на стороне клиента - все Ок! Косяк, получается, именно в записи значений в базу. Передаю как числовые, так и текстовые значения. Тип передаваемых данных соответствует столбцам таблицы. Может есть какие-то мысли по этому поводу? На счет NULL в индексном столбце я удивлен. так делать нельзя?) дело в том, что я только начинаю изучать эту область, и в книгах, которые я читал это не возбранялось. И примеры кода были рабочими) Версия jQuery версии 3.3.1. --- Добавлено --- А что посоветуете?
Так делать нежелательно. Поведение зависит от настроек сервера БД. Вплоть до неработоспособности. --- Добавлено --- @yanuzay, ну по коду ТСа вообще трудно понять, куда он пытается писать NULL, поэтому я и не стал писать об этом. Но догадаться конечно можно.
а что тут думать ? читай про insert into и пиши в базу с указанием столбцов в которые ты хочешь записать. первый столбец id у тебя наверно с автоинкрементом, зачем тебе туда что то писать, тем более NULL
Проблема была в запросе. Нужно явно указывать столбцы, в которые пишешь) Код (Text): INSERT INTO test (id,row1,row2,row3,row4) VALUES (NULL,'$q1','$q2','$q3','$q4')" Если писать NULL в индексный столбец, никаких проблем нет. Автоинкремент работает. Любопытно, что на учебных примерах без указания столбцов все работало.
Сказал же, что это «закладка». Где-нибудь в др. месте решишь поднять сайт, может и не заработать. Структуру таблицы могли изменить, или набор записываемых данных.
зачем ты пишешь null в поле id , у него же итак автоинкремент! не отправляй в поле id ничего, он и так сделает свое дело