【问题标题】:Update database with form value [duplicate]使用表单值更新数据库[重复]
【发布时间】:2020-06-10 20:23:47
【问题描述】:

我正在尝试制作一个“拒绝”按钮,我可以拒绝用户的卡片,并将一条消息存储到我的数据库中,我将在其他页面上显示他。我的问题是,如果我将输入值添加到我的“更新”命令中,它就会停止工作。

if(isset($_POST['reject'])){
    $id = $_POST['rejecttext'];
    $allowed = mysqli_query($conn," UPDATE cards SET visibility = '1', confirmed = '2', rejecttext = {$_POST['rejecttext']} WHERE id = '$id' ");
}
<form action="" method="POST">
    <input value="<?php echo $record['id']; ?>" name="id" style="display: none;">
    <input type="submit" class="btn btn-success" name="accept"/>
    <input type="submit" class="btn btn-danger" name="reject"/>
    <input type="text" id="rejecttext" name="rejecttext">
</form>

没有这部分rejecttext = {$_POST['rejecttext']} 一切正常。

【问题讨论】:

  • 停止工作是什么意思?有任何错误信息吗?此外,这可能有助于回答您的问题:stackoverflow.com/questions/8893551/update-query-php-mysql。编辑:您可能缺少引号? ```rejecttext = "{$_POST['rejecttext']}" ```
  • 是的,我错过了报价,也错过了这部分 $rejecttext = $_POST['rejecttext']; 感谢您的快速帮助。
  • 这对严重的 SQL 注入开放;使用准备好的语句。
  • 即使没有人可以访问此站点,但管理员是否开放?

标签: php sql


【解决方案1】:

您缺少引号。 您的查询应如下所示:

$allowed = mysqli_query($conn," UPDATE cards SET visibility = '1', confirmed = '2', rejecttext = '{$_POST['rejecttext']}' WHERE id = '$id' ");

正如其他人已经提到的那样,这并不安全。您应该考虑使用准备好的语句:https://www.w3schools.com/php/php_mysql_prepared_statements.asp

【讨论】:

    猜你喜欢
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2021-06-18
    相关资源
    最近更新 更多