Не записываются данные в БД

295
25 октября 2017, 06:57

Проблема в том, что запрос в action.php выполняется, но таблица не обновляется, ошибок также не выводится.

Folder/user.php:

....
<div class="col-md-6">
  <div class="form-group label-floating">
    <form class="form-inline" action="../folder/action.php" method="post">
      <input type="number" class="form-control input-sm" name="days" placeholder="Days" style="width: 70px;" required>
      <input type="text" class="form-control input-sm" name="reason" placeholder="Reason" required>
      <input type="hidden" name="userid" value="'.$id.'">
      <input type="submit" class="btn btn-simple btn-round btn-xs" name="action" value="Do action">
    </form>
  </div>
</div>
....

Folder/action.php:

<?php
  include_once $_SERVER['DOCUMENT_ROOT'].'/configuration/main.php'; // главные настройки, включающие подключение, с ними все ок
  if ($_SESSION['admin']<3) exit(redirect("../folder/",2)); // проверка сессии, выход при условии
  $mysqli=connect(); // подключение к бд
  $id=$mysqli->real_escape_string($_POST['userid']);
  $days=$mysqli->real_escape_string($_POST['days']);
  $actiontime=time()+(3600*24)*$days;
  $reason=$mysqli->real_escape_string($_POST['reason']);
  // ^ преобразование информации из folder/user.php
  if ($id<1||$days<0) exit(redirect("../folder/",2));
  if ($days>'0') 
     $mysqli->query("insert into `action`(`userid`,`actionid`,`reason`,`time`) values ('".$id."','".$_SESSION['id']."','".$reason."','".$actiontime."')");
  else 
     $mysqli->query("insert into `action`(`userid`,`actionid`,`reason`,`time`) values ('".$id."','".$_SESSION['id']."','".$reason."','0')");
// запросы шредингера
  $mysqli->close(); // закрытие подключения к бд
  redirect("../folder/user?id=".$id."",2); // возврат к folder/user.php
?>

Если скрипт выполнятся, он редиректит как и должен (последняя строка в action.php), но таблица action не содержит изменений.

Проверил все переменные, все они выводятся верно. Подключение к БД также верно.

Answer 1

Советую написать sql запрос в каком-нибудь редакторе и выполнить его там же (хоть phpMyAdmin). Если данные запишутся, пробуйте выполнить тот же запрос на стороне php. Если ок, то копайте дальше поэтапно.

Рекомендую вообще использовать PDO (чтобы забыть про sql инъекции) или какую-нибудь библиотеку для удобной работы. А, и добавление и т.п. с базой нужно через транзакции делать.

$connection->autocommit(false); 
    $query = ""; //sql query here
    $result = $connection->query($query);
    if (!$result) exit($connection->error);
if (!$connection->commit()) exit($connection->error);

Ну и чем писать так values ('".$id."', , можно сделать красивее и удобнее вот так values ('${id}', или values ('$id',. Но первый вариант чуточку быстрее.

READ ALSO
Как в битрикс переместить стили в футер?

Как в битрикс переместить стили в футер?

Как переместить стили и скрипты в футер из head? Эти настройки модуля только ломают вёрстку, те

292
Создание REST API на базе MVC

Создание REST API на базе MVC

Здравствуйте!

318
Почему этот код работает?

Почему этот код работает?

Я хотел узнать как получить все строки таблицы поочередно в массив и нашел следующее решение:

294
Переход на новую строку

Переход на новую строку

Допустим есть файл где храниться ID переписок пользователя построчно, но я не могу использовать константу PHPEOL для перехода на новую строку...

419