簡體   English   中英

使用准備好的語句更新表

[英]update table with prepared statement

我正在嘗試更新我的卡片表。 在用戶選擇“更新”按鈕后,它會將他重定向到更新頁面,他可以在其中查看和修改他的數據。 問題是,輸入字段不會加載他的數據,也由於某種原因無法更新它們。 這是第一頁上的按鈕:

<a href="update.php?id=<?php echo $record['id']; ?>" class="btn btn-succes" role="button">Edit</a>

這是更新頁面:

<?php
session_start();
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'reg');

/* Attempt to connect to MySQL database */
$mysqli = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

// Check connection
if($mysqli === false){
    die("HIBA: Nem sikerült csatlakozni. " . mysqli_connect_error());
}

$stmt = $mysqli -> prepare('UPDATE cards SET name=?, phone=?, phone2=?, email=?, zipcode=?, address=?, job=?, description=?, visibility=?, confirmed=?, userid=?  WHERE id = ?');



if (
    $stmt &&
    $stmt->bind_param('ssssisssiiii', $name, $phone, $phone2, $email, $zipcode, $address, $job, $description, $visibility, $confirmed, $userid, $id)
    &&
    $stmt -> execute() &&
    $result = mysqli_query($mysqli,"SELECT * FROM cards WHERE id='$id'") &&
    $result = $stmt -> get_result() 
) {

        $id = $row['id'];
        $name = $row['name'];
        $phone = $row['phone'];
        $phone2 = $row['phone2'];
        $email = $row['email'];
        $zipcode = $row['zipcode'];
        $address = $row['address'];
        $job = $row['job'];
        $description = $row['description'];
        $userid = $_SESSION['userid'];
        echo 'Updated';
    }

 else {
    echo $mysqli -> error;
}
?>
 <form action="update.php" method="post">
<table cellpadding="10" cellspacing="0" width="500" class="tblSaveForm">
<tr class="header">
<td colspan="2">Edit Card</td>
</tr>
<tr>
<td><label>Username</label></td>
<td><input type="text" name="name" class="txtField" value="<?php echo $result['name']; ?>">
</tr>
<tr>
<td><label>phone</label></td>
<td><input type="text" name="phone" class="txtField" value="<?php echo $result['phone']; ?>"></td>
</tr>
<td><label>phone2</label></td>
<td><input type="text" name="phone2" class="txtField" value="<?php echo $result['phone2']; ?>"></td>
</tr>
<tr>
<td><label>email</label></td>
<td><input type="text" name="email" class="txtField" value="<?php echo $result['email']; ?>"></td>
</tr>
<tr>
<td><label>zipcode</label></td>
<td><input type="text" name="zipcode" class="txtField" value="<?php echo $result['zipcode']; ?>"></td>
</tr>
<tr>
<td><label>address</label></td>
<td><input type="text" name="address" class="txtField" value="<?php echo $result['address']; ?>"></td>
</tr>
<tr>
<td><label>job</label></td>
<td><input type="text" name="job" class="txtField" value="<?php echo $result['job']; ?>"></td>
</tr>
<tr>
<td><label>description</label></td>
<td><input type="text" name="description" class="txtField" value="<?php echo $result['description']; ?>"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="Submit" class="buttom"></td>
</tr>
</table>
</form>

這是數據的來源:

 $stmt = $conn->prepare("SELECT id, name, phone, phone2, email, zipcode, address, job, description, visibility, confirmed, userid FROM cards WHERE userid= ?");
          $stmt->bind_param("i",$userid);
          $userid = (int) $_SESSION['id'];
          $stmt->execute();
          $result = $stmt->get_result();

            while( $record = mysqli_fetch_assoc($result) ) {
            ?>

            <div class="col-md-4">
              <div class="card card-profile">
                <div class="card-avatar">
                  <a href="#">
                  <img class="img" src="assets/img/faces/avatar.png" />
                  </a>
                </div>
                <div class="card-body">
                  <div class="card-top">
                  <h4 class="card-category text-gray"><b><?php echo $record['job']; ?></b><br>
                    <span style="color: black;"><?php echo $record['name']; ?></span></h4>
                  </div>
                  <hr>
                  <h5 class="card-description">
                  <i class="material-icons">
                      mobile_friendly
                      </i>
                      <b>tel.:</b> <?php echo $record['phone']; ?>
                    </h5>
                    <h5 class="card-description"  <?php if(empty($record['phone2'])){echo " style='display: none';"; }?>>
                  <i class="material-icons">
                      mobile_friendly
                      </i>
                      <b>tel2.:</b> <?php echo $record['phone2']; ?>
                    </h5>
                    <h5 class="card-description" <?php if(empty($record['email'])){echo " style='display: none';"; }?>>
                      <i class="material-icons">
                        email
                        </i>
                        <b> E-mail:</b> <?php echo $record['email']; ?>
                    </h5>
                    <h5 class="card-description" <?php if(empty($record['address'])){echo " style='display: none';"; }?>>
                        <i class="material-icons">
                            location_on
                            </i>
                          <b> Cím:</b> <?php echo $record['address']; ?>
                      </h5>
                    <h5 class="card-description">
                        <b> Leírás:</b> <?php echo $record['description']; ?>
                    </h5>
                    <div class="card-buttons">
                  <form action="" method="POST" onsubmit="return confirm('Biztosan törölni szeretné?');">
                     <input value="<?php echo $record['id']; ?>" name="id" style="display: none;">
                     <a href="update.php?id=<?php echo $record['id']; ?>" class="btn btn-succes" role="button">Edit</a>
                     <button type="submit" class="btn btn-danger" name="reject" id="update" style="background-color: red;">Törlés</button>

                  </form>

您缺少將用戶輸入放入UPDATE語句中使用的所有變量的代碼。 更新應該只在提交表單時使用,而不是在您最初顯示表單時使用。

您需要將id放入表單的action屬性中的 URL 中,以便它知道要更新哪個 ID。

<?php
session_start();
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'reg');

/* Attempt to connect to MySQL database */
$mysqli = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

// Check connection
if($mysqli === false){
    die("HIBA: Nem sikerült csatlakozni. " . mysqli_connect_error());
}

$id = $_GET['id'];

if (isset($_POST['submit'])) {
    $name = $_POST['name'];
    $phone = $_POST['phone'];
    $phone2 = $_POST['phone2'];
    $email = $_POST['email'];
    $zipcode = $_POST['zipcode'];
    $address = $_POST['address'];
    $job = $_POST['job'];
    $description = $_POST['description'];
    $visibility = $_POST['visibility'];
    $confirmed = $_POST['confirmed'];
    $userid = $_POST['userid'];

    $stmt = $mysqli -> prepare('UPDATE cards SET name=?, phone=?, phone2=?, email=?, zipcode=?, address=?, job=?, description=?, visibility=?, confirmed=?, userid=?  WHERE id = ?');

    if (
        $stmt &&
        $stmt->bind_param('ssssisssiiii', $name, $phone, $phone2, $email, $zipcode, $address, $job, $description, $visibility, $confirmed, $userid, $id) &&
        $stmt -> execute()
        ) {
        echo 'Updated';
    } else {
        echo $mysqli -> error;
    }
} 

$getstmt = $mysql->prepare("SELECT * FROM cards WHERE id= ?");
if ($getstmt and
    $getstmt->bind_param('i', $id) and
    $getstmt->execute() and
    $result = $getstmt->get_result() and
    $row = $result->fetch_assoc()
    ) {

    $id = $row['id'];
    $name = $row['name'];
    $phone = $row['phone'];
    $phone2 = $row['phone2'];
    $email = $row['email'];
    $zipcode = $row['zipcode'];
    $address = $row['address'];
    $job = $row['job'];
    $description = $row['description'];
    $userid = $_SESSION['userid'];


    ?>
    <form action="update.php?id=<?php echo $id; ?>" method="post">
    <table cellpadding="10" cellspacing="0" width="500" class="tblSaveForm">
    <tr class="header">
    <td colspan="2">Edit Card</td>
    </tr>
    <tr>
    <td><label>Username</label></td>
    <td><input type="text" name="name" class="txtField" value="<?php echo $name; ?>"></td>
    </tr>
    <tr>
    <td><label>phone</label></td>
    <td><input type="text" name="phone" class="txtField" value="<?php echo $phone; ?>"></td>
    </tr>
    <td><label>phone2</label></td>
    <td><input type="text" name="phone2" class="txtField" value="<?php echo $phone2; ?>"></td>
    </tr>
    <tr>
    <td><label>email</label></td>
    <td><input type="text" name="email" class="txtField" value="<?php echo $email; ?>"></td>
    </tr>
    <tr>
    <td><label>zipcode</label></td>
    <td><input type="text" name="zipcode" class="txtField" value="<?php echo $zipcode; ?>"></td>
    </tr>
    <tr>
    <td><label>address</label></td>
    <td><input type="text" name="address" class="txtField" value="<?php echo $address; ?>"></td>
    </tr>
    <tr>
    <td><label>job</label></td>
    <td><input type="text" name="job" class="txtField" value="<?php echo $job; ?>"></td>
    </tr>
    <tr>
    <td><label>description</label></td>
    <td><input type="text" name="description" class="txtField" value="<?php echo $description; ?>"></td>
    </tr>
    <tr>
    <td colspan="2"><input type="submit" name="submit" value="Submit" class="buttom"></td>
    </tr>
    </table>
    </form>
} else {
    echo $mysqli->error;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM