Не работает запрос UPDATE php

101
20 сентября 2021, 22:20

Не работает запрос UPDATE, данные не изменяются. Переменные существуют, через echo проверял, подключение к базе данных тоже, другие запросы выполняются.

mysql_query("UPDATE `ideas` SET `login` = ".$_POST['name']." WHERE `id` = ".$_POST['id']."");
Answer 1
//защита от XSS атаки и замусоренности    
$name = substr(htmlspecialchars(trim(strip_tags($_POST['name']))), 0, 24 );
//Самое длинное русское имя - Константин - 10 символов, на лат.= 20
$id = (int) abs($_POST['id']);//только целое положительное 

*А если у Вас уже есть соединение с базой, то лучше так:

$name = substr(htmlspecialchars(trim(strip_tags($_POST['name']))), 0, 24 );
$name = mysql_real_escape_string($name);//от SQL инъекции
$id = (int) abs($id);
$id = mysql_real_escape_string($id);//можно без этого - в этом случае
$sql = "UPDATE `ideas` SET `login`='$name' WHERE `id`='$id'";
mysql_query($sql) or die(mysql_error());

Ну, а вообще, как указали, лучше так (просто для интереса)(PDO):

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "db";
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // устанавливаем PDO режим ошибки на исключение
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "UPDATE ideas SET login='$name' WHERE id='$id'";
    // Подготавливаем запрос
    $stmt = $conn->prepare($sql);
    // Выполняем запрос
    $stmt->execute();
    // Выводим сообщение об успешном апдейте 
    echo $stmt->rowCount() . " Все хорошо";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }
$conn = null;

Процедурный:

// Создаем соединение
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Проверяем соединение
if (!$conn) {
    die("Соединение не удалось: " . mysqli_connect_error());
}
$sql = "UPDATE ideas SET login='$name' WHERE id='$id'";
if (mysqli_query($conn, $sql)) {
    echo "Запись успешно обновлена";
} else {
    echo "Ошибка при обновлении: " . mysqli_error($conn);
}
mysqli_close($conn);

MySQLi объектно-ориентрированный:

// Уст. соединение
$conn = new mysqli($servername, $username, $password, $dbname);
// Проверяем его
if ($conn->connect_error) {
    die("Не удалось соединиться: " . $conn->connect_error);
}
 $sql = "UPDATE ideas SET login='$name' WHERE id='$id'";
if ($conn->query($sql) === TRUE) {
    echo "Запись успешно обновлена";
} else {
    echo "Ошибка при обновлении записи: " . $conn->error;
}
$conn->close();
READ ALSO
Как бороться с Segmentation fault?

Как бороться с Segmentation fault?

Выполняю скрипт примерно такого содержания:

272
Не загружается файл на сервер PHP

Не загружается файл на сервер PHP

Эта загрузка работает стабильно на локальном сервере, но на удаленном нетВ форме прописан enctype="multipart/form-data

129
Как в Spring фильтровать переменные формы?

Как в Spring фильтровать переменные формы?

Есть проект на Spring Boot Как мне входящие данные из формы фильтровать? Допустим в объекте TestDTO есть поле phone, до валидации я хочу удалить все не числовые...

116
Вызов метода класса активности из запущенного сервиса

Вызов метода класса активности из запущенного сервиса

Переустановка Alarm после перезагрузки устройстваУ меня объявлен широковещательный приемник, который запускается при загрузке ОС на устройстве

248