Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Редактирование информации в sql через post запрос на php

Ден Але Ученик (60), на голосовании 2 года назад
Всем привет! Имеется такой код:
<?
if (isset($_POST["setcdeksk"]) && isset($_POST["setcdekprice"]) && isset($_POST["setcdekost"])) {
$setcdekskphp = $_POST['setcdeksk'];
$setcdekpricephp = $_POST['setcdekprice'];
$setcdekostphp = $_POST['setcdekost'];
$sql_red_cdek = "UPDATE cms_cron_market SET sec_key=".$setcdekskphp.", min_sum_vug_tov=".$setcdekpricephp.", min_oct_vug_tov=".$setcdekostphp." WHERE id=5";
$conn->query($sql_red_cdek);
if ($sql_red_cdek) {
echo '<p>Данные успешно изменены!</p>';
} else {
echo '<p>Произошла неизвестная ошибка..</p>';
}
}
?>
<form action="" method="post">
<input type="text" name="setcdeksk" value="111">
<input type="text" name="setcdekprice" value="222">
<input type="text" name="setcdekost" value="333">
<input type="submit" value="Сохранить">
</form>

При сохранении пишет "Данные успешно изменены!", но сами данные в базе не меняются.. Подключение к базе корректное.. Кто подскажет в чем проблема?
Дополнен 2 года назад
Весь код находится в одном файле.. (cron.php например)
Дополнен 2 года назад
Вопрос решен.. необходимо было сделать не так:
$sql_red_cdek = "UPDATE cms_cron_market SET sec_key=".$setcdekskphp.", min_sum_vug_tov=".$setcdekpricephp.", min_oct_vug_tov=".$setcdekostphp." WHERE id=5";
а так:
$sql_red_cdek = "UPDATE cms_cron_market SET sec_key='".$setcdekskphp."', min_sum_vug_tov='".$setcdekpricephp."', min_oct_vug_tov='".$setcdekostphp."' WHERE id=5";
Голосование за лучший ответ
user49913 Просветленный (38737) 2 года назад
настоятельно советую почитать про prepared statements и как их делать в похапе
этот код нельзя использовать в продакшене, и в приличном обществе за такое бьют по рукам
Денис Попов Мастер (1162) 2 года назад
м,
1) в $sql_red_cdek у тебя строка запроса, поэтому в if ($sql_red_cdek) у тебя всегда будет правда. надо записать $conn->query() в переменную, и проверить её на FALSE
2) по хорошему, данные не должны записываться напрямую в запрос. а как-то так:
$sql = "UPDATE cms_cron_market SET sec_key= :sec_key";
$stmt = $conn->prepare($sql);
$stmt->bindValue(":sec_key", $setcdekskphp);
if ($conn->execute()) {
// успешно
} else {
// не успешно
}
Похожие вопросы