Добрый день! Мой первый сайт. Пытаюсь разобраться, что не так. Из JS передаю массив в PHP, после ряда преобразований, строка не записывается в БД. Подскажите, что не так? jQuery: ------------------------------------------------------- Код (Javascript): var team1_activ = []; ............ Код (Javascript): jQuery('#Label2').on('click', function() { var Team1Line1 = 'team1_activ='+JSON.stringify(team1_activ); jQuery.ajax({ url: 'team1_l1.php', dataType: 'json', data: ({Team1Line1: Team1Line1}), success: function(){location.href = "line1.html"} }); }); PHP (team1_l1.php): -------------------------------------------- PHP: <?php $Team1Line1_arr = json_decode($_GET['Team1Line1']); $Team1Line1_db = implode('', $Team1Line1_arr); $connection->query("UPDATE line1 SET Team1_Line1 = $Team1Line1_db"); unset($_GET['Team1Line1']); ?>
отладка/debug http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550
Разобрал по буквам... Пришел к выводу, что переменная переданная $_GET не заносится в mysql. Но почему? не понимаю. Сделал следующее: 1. разбил массив 'team1_activ' на переменные и передаю их в php: Код (Javascript): jQuery('#Label2').on('click', function () { var Time1Line1_id1 = team1_activ[0]; var Time1Line1_id2 = team1_activ[1]; var Time1Line1_id3 = team1_activ[2]; jQuery.ajax({ url: 'team1_l1.php', data: ({Time1Line1_id1: Time1Line1_id1, Time1Line1_id2: Time1Line1_id2, Time1Line1_id3: Time1Line1_id3}), success: function(){location.href = "line1.html"}, }); }); 2. в php делаю тупую проверку, которая показывает, что $_GET не пустое: PHP: <?php $connection = new mysqli($host,$user,$parol,$db); if (!$connection) { exit(mysqli_error()); } if(!empty ($_GET['Time1Line1_id1'])) { $connection->query("UPDATE line1 SET Team1_Line1 = 1 WHERE id = 1"); $connection->query("UPDATE line1 SET Team1_Line1 = 0 WHERE id = 2"); $connection->query("UPDATE line1 SET Team1_Line1 = 0 WHERE id = 3"); } else { $connection->query("UPDATE line1 SET Team1_Line1 = 0 WHERE id = 1"); $connection->query("UPDATE line1 SET Team1_Line1 = 0 WHERE id = 2"); $connection->query("UPDATE line1 SET Team1_Line1 = 0 WHERE id = 3"); } ?> Могу лишь предположить, что причина в типе данных. Но передаю в переменных БУКВЫ. Возникает вопрос, как правильно подготовить переменную для передачи в mysql?
Запросы ВСЕГДА отлаживаются одинаково: печатается на экран запрос, открывается консоль mysql или phpmyadmin или любой аналог, вставляется запрос. GET тут непричём. Посмотрите, какой запрос у вас получается, и на что ругнётся mysql.
Я пробовал через консоль mysql. Запрос организован правильно. По очереди записывал значения, числа записываются, а вот БУКВЫ не хотят. Значение полей в БД TEXT. пробовал и CHAR и VARCHAR. На основании этого предположил, что что-то с типом данных....
Спасибо Всем за помощь и ответы. Разобрался!!! Интересная особенность... 1. Первый раз в БД делал замену текстового значения следующим образом: Код (Text): JS: var val1 = "ABC"; ... передача в php jQuery.ajax(... PHP: $param1 = $_GET['val1']; $connection->query("UPDATE line1 SET Team1_Line1 = $param1"); - и mysql не ругалась на то, что переменная в запросе указана без ' ', принимала текст ABC. А вот второй раз у меня не получилось передать ТЕКСТОВОЕ значение переменной, которое получилось из массива без ' '; получилось только так: PHP: $Team1Line1_db1 = $_GET['Time1Line1_id1']; $connection->query("UPDATE line1 SET Team1_Line1 = '$Team1Line1_db1' WHERE id = 1");
Это все понятно. Но почему тогда в первом случае сама переменная содержащая текст "ABC", указанная в запросе к БД без кавычек передала значение??? --- Добавлено --- Т.е. когда я ЯВНО присваиваю значение переменной в виде текста "АБС" кавычки не требуются. А когда во втором получаю текстовое значение из массива, он просит кавычки?