php - 数据提交到mysql后没有改变

标签 php mysql submit

我有一个用于将数据更新到mysql的代码。看起来没有问题,但并没有改变

我的更新代码:

//previous data//
....
if (isset($_POST['update'])) {
$nim = mysqli_real_escape_string($connection, ($_POST['nim']));
$name = mysqli_real_escape_string($connection, ($_POST['name']));
$class1 = mysqli_real_escape_string($connection, ($_POST['class2']));
$class2 = mysqli_real_escape_string($connection, ($_POST['class1']));

if (!preg_match("/^[1-9][0-9]*$/",$nim)) {
    $error = true;
    $nim_error = "NIM only contain numbers";
}
if (!preg_match("/[^a-zA-Z]/",$name)) {
    $error = true;
    $name_error = "NIM only contain numbers";
}
if (!preg_match("/^[1-9][0-9]*$/",$class1)) {
    $error = true;
    $class1_error = "Class only contain numbers";
}
if (!preg_match("/^[1-9][0-9]*$/",$class1)) {
    $error = true;
    $class2_error = "Class only contain numbers";
}

$result = "UPDATE users SET nim='$nim', name='$name', class1='$class1', class1='$class1' WHERE id='$id'";
mysqli_query($connection, $result);

}
?>

这是我的 html 代码:

<div id="popup2" class="overlay">
<div class="popup">
    <h2 class="range2">Edit</h2>
    <a class="close" href="#">&times;</a>
    <div class="content">
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <input class="input" type="text" name="nim" placeholder="NIM" required/>
        <input class="input" type="text" name="name" placeholder="Name" required/>
        <i>SK</i>
        <input class="input1" type="text" name="class1" placeholder="00" required/>
        <i>-</i>
        <input class="input1" type="text" name="class2" placeholder="00" required/>
        <input name="update" type="submit" class="button" id="submit" value="Submit">
    </form> 
    </div>
</div>
</div>

代码有错误吗?谢谢..

最佳答案

这真的很难解释:看一下。

If you want to update a single data you will need a identity(Primary key). That mean which data you want to update.

下面的示例:检查index.php文件

  1. In file index.php change dbname to your database name in connection.
  2. browse project_url/index.php?id=1 [here use any id from your database]
  3. Then update your data.

index.php

//Show existed data againist id
if(isset($_GET['id'])){
    $id = $_GET['id'];
    $stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
    $stmt->execute(array('id'=>$id));
    $data = $stmt->fetch();
    if (empty($data)) {
       echo "No data found in user table. Use proper ID.";
    }
}

//Update query
$msg = array();
if (isset($_POST['id']) && $_POST['id']!='') { //operation is update, because id exist
    if($_POST['nim']!=0 && is_numeric($_POST['nim'])){
        $nim = $_POST['nim'];
    }else{
        $msg[]="Nim only can be number";
    }

    if($_POST['name']!=''){
        $name = $_POST['name'];
    }else{
        $msg[]="came only can not be empty";
    }

    if(is_numeric($_POST['class1'])){
        $class1 = $_POST['class1'];
    }else{
        $msg[]="Class1 only can be number";
    }

    if(is_numeric($_POST['class2'])){
        $class2 = $_POST['class2'];
    }else{
        $msg[]="Class1 only can be number";
    }
    $id = $_POST['id'];

    if(count($msg)==0){
        $stmt = $pdo->prepare('UPDATE users SET nim=:nim, name=:name, class1=:class1, class2=:class2 WHERE id=:id');
        $result = $stmt->execute(array(
                    'nim'   => $nim,
                    'name'  => $name,
                    'class1'=> $class1,
                    'class2'=> $class2,
                    'id'    => $id,
                ));
        if($result){
            echo "successfully updated.";
        }else{
            echo "update failed";
        }
    }
}else{
    //You can run here insert operation because id not exist.
    echo "Id not set";
}
?>
<div id="popup2" class="overlay">
<div class="popup">
    <h2 class="range2">Edit</h2>
    <a class="close" href="#">&times;</a>
    <div class="content">
        <?php foreach ($msg as $value) {
           echo $value."<br>";
        }?>
        <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
            <?php if(isset($data)){?> 
                <input class="input" type="hidden" name="id" value="<?php echo $data['id']; ?>" />
            <?php } ?>
            <input class="input" type="text" name="nim" value="<?php echo isset($data)?$data['nim']:''?>" placeholder="NIM" required/>
            <input class="input" type="text" name="name" value="<?php echo isset($data)?$data['name']:''?>" placeholder="Name" required/>
            <i>SK</i>
            <input class="input1" type="text" name="class1" value="<?php echo isset($data)?$data['class1']:''?>" placeholder="00" required/>
            <i>-</i>
            <input class="input1" type="text" name="class2" value="<?php echo isset($data)?$data['class2']:''?>" placeholder="00" required/>
            <input name="update" type="submit" class="button" id="submit" value="Submit">
        </form> 
    </div>
</div>
</div>

关于php - 数据提交到mysql后没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40068701/

相关文章:

mysql - 困难的sql请求

php - 如何编辑动态创建的文本框值并将其插入到 MySQL DB?

jQuery form.submit() 刷新页面而不是提交

php - 尽管 "Nothing to install or update"composer.lock 发生变化

php - 获取 MySQL UPDATE 中所有受影响的行

php - Zend 框架 mysql php 自定义安装

php - HTML 表单提交仅偶尔注册点击 - 为什么?

php - 在 1and1 托管中发送邮件时遇到问题

php - jQuery - 根据视口(viewport)中的部分显示按钮

php - 无法使用 PHP 插入 MySQL 表