Приветствую! Суть проблемы такова: форма отправляет данные методом POST, далее значение взятое из формы командой UPDATE вставляется в нужный столбец таблицы. В итоге в таблицу вставляется пустое место. Значение используемой переменной выводится функцией var_dump т.е. она не пустая. Если использую переменную взятую не из массива POST, то все работает. Может быть проблема в том что работаю на open sever'е ? Далее выкладываю код: Код (Text): <?php $project = count($projectes); foreach ($projectes as $project){ $inpt = filter_input(INPUT_POST,'name1'); echo "<pre>"; var_dump($inpt); echo "</pre>"; $com = 'UPDATE `project` SET `title` = "'.$inpt.'" WHERE `project`.`id` = 1;'; $sql = mysqli_real_query($link, $com); if ($sql) { echo "<p>Данные успешно обновлены</p>"; } else { echo "<p>Произошла ошибка.</p>"; } $new = $project['title']; echo "<pre>"; echo "новое значение:", $new; echo "</pre>"; } ?>
".$inpt." - убрал у переменной в запросе ' ' и заметил что значения int т.е. числа стали успешно заноситься в базу, а как только пишу строку сразу ошибка.
Код (Text): <?php ini_set("error_reporting", E_ALL); ini_set("display_errors", 1); ini_set("display_startup_errors",1); $link = mysqli_connect('localhost','root','', 'my_blog'); If (mysqli_connect_errno()) { echo "нет соединения с БД(".mysqli_connect_errno()."): ".mysqli_error().""; } вот так обстоят дела с подключением, ошибок нет --- Добавлено --- в настройках open server стоит mySQL 5.5
@xcoder77, После подключения выполните SQL-запрос: set names utf8 или PHP: mysqli_set_charset($link, "utf8");
mysqli_query() expects at least 2 parameters, 1 given in C:\OpenServer\domains\veronika.loc\auth\change.php on line 10 ошибка при запросе
Код (Text): <?php ini_set("error_reporting", E_ALL); ini_set("display_errors", 1); ini_set("display_startup_errors",1); $link = mysqli_connect('localhost','root','', 'my_blog'); mysqli_set_charset($link, "utf8"); If (mysqli_connect_errno()) { echo "нет соединения с БД(".mysqli_connect_errno()."): ".mysqli_error().""; } кавычки вернул, ошибки не возникает при таком запросе, но значения все равно пустые вставляет
Попробуйте вместо вот этого: PHP: $inpt = filter_input(INPUT_POST,'name1'); Написать вот это: PHP: $inpt = $_POST['name1'];
Проверь какой тип данных пытаешься сохранить и какой тип данных в столбце. У меня есть версия, что они не совпадают лол
Form HTML: <form action="" method="post"> <p>Text <input type="text" name="name1" /></p> <p><input type="submit" /></p> </form> PHP PHP: $name1 = filter_input(INPUT_POST,'name1',FILTER_SANITIZE_STRING); $com = "UPDATE project SET title = '{$name1}' WHERE project.id = 1"; $mysqli = new mysqli("localhost", "root", "", "my_blog"); if($mysqli->connect_errno) { printf("Не удалось подключиться: %s\n", $mysqli->connect_error); exit(); } if($mysqli->query($com)) { echo "UPDATE прошел успешно"; } else { printf("Ошибка: %s\n", $mysqli->error); }
хмм... тоже самое вставляет пустоту --- Добавлено --- Maputo а вот как создается массив: Код (Text): function getProject() { global $link; $sql = "SELECT * FROM `project`"; $result = mysqli_query($link, $sql); $projectes = mysqli_fetch_all($result,1); // echo'<pre>'; //var_dump($projectes); //echo'</pre>'; return $projectes; } $projectes = getProject();
@xcoder77, получается у Вас UPDATE делается столько раз, сколько записей в таблице? И Каким образом в $project['title'] попадает новое значение title? В нем ведь хранится прежнее значение. И можно, все-таки, увидеть дамп таблицы (только структуру)?
вот так Код (Text): $inpt = filter_input(INPUT_POST,'name1'); echo "<pre>"; var_dump($inpt); echo "</pre>"; $com = 'UPDATE `project` SET `title` = "'.$inpt.'" WHERE `project`.`id` = 1;'; $sql = mysqli_real_query($link, $com); if ($sql) { echo "<p>Данные успешно обновлены</p>"; } else { [ echo "<p>Произошла ошибка.</p>"; }
В результате экспериментов я понял, что данные не вставляются в таблицу только в том случае если я бери их из массива $_POST, если поставить любую другую переменную то все работает как надо. Почему это происходит пока не понял... буду думать