UPDATE查询不能正常运行php

时间:2015-11-01 23:35:11

标签: php mysqli

试着保持简短。我在grid.php文件中有一个while循环来填充表格......

<?php while($product = $products->fetch_assoc()) { ?>
  <tr>
    <td><?php echo $product['cd_id']?></td>
    <td><?php echo $product['cd_title']?></td>
    <td><?php echo $product['cd_musician_fname']?></td>
    <td><?php echo $product['cd_musician_lname']?></td>
    <td><?php echo $product['cd_price']?></td>
    <td><a href="edit.php?id=<?echo $product['cd_id'];?>" type="button" class="btn btn-primary">Edit</a></td>
    <td><a href="delete.php?id=<?echo $product['cd_id'];?>" type="button" class="btn btn-danger">Delete</a></td>
  </tr>
<?php } ?>

如果我点击第一个锚标记将我带到edit.php文件,这是该文件的头代码。

<?php include '_includes/db.php';
$cd_id   = trim($_GET['id']);
$message = '';
include '_includes/connection.php';
if($db->connect_error){
  $message = $db->connect_error;
}else{
  $sql  = "SELECT * FROM CD WHERE cd_id = $cd_id";
  $result = $db->query($sql);
  $row = $result->fetch_assoc();
  if($db->error){
    $message = $db->error;
   }
 }
?>

现在我将展示edit.php的html

<!--        Product Musician last name-->
      <fieldset class="form-group">
        <label for="cd_musician_lname">Musician's lirst name</label>
        <input type="text" class="form-control" id="cd_musician_lname" name="cd_musician_lname" value="<?php echo $row['cd_musician_lname'];?>">
      </fieldset>
      <!--        End of Musician last name-->

      <!--        Product price-->
      <fieldset class="form-group">
        <label for="cd_price">Product price</label>
        <input type="text" class="form-control" id="cd_price" name="cd_price" value="<?php echo $row['cd_price'];?>">
      </fieldset>
      <!--    End of Product price-->

      <!--    Form submit button-->
      <a href="edit_confirm.php?id=<?echo $row['cd_id'];?>" type="submit" class="btn btn-primary">Update Record</a>
      <a class="btn btn-primary" href="index.php" role="button">Go Back Home</a>

我的edit.php页面运行得很好但是如果我在字段中进行更改并单击提交锚标记,我会将该行的所有字段都清空但是PK。这是最终的edit_confirm.php文件的代码

<?php
include '_includes/db.php';

$cd_id             = trim($_GET['id']);
$cd_title          = $_POST['cd_title'];
$cd_musician_fname = $_POST['cd_musician_fname'];
$cd_musician_lname = $_POST['cd_musician_lname'];
$cd_price          = $_POST['cd_price'];

$message = '';
include '_includes/connection.php';

if($db->connect_error){
  die("Connection failed: ".$db->connect_error);
} else {
$sql = "UPDATE CD SET cd_title='".$cd_title."', cd_musician_fname='".
$cd_musician_fname."', cd_musician_lname='".
$cd_musician_lname."',   cd_price='".$cd_price."' WHERE cd_id = $cd_id ";
$db->query($sql);
var_dump($sql);
 }
?>

<!DOCTYPE html>
<html lang="en">
<head>
<?php include '_includes/main-head.php';?>
</head>
  <body>
  <?php include '_includes/main-navbar.php';?>

  <div class="container">
    <hr>
    <?php
    if($db->query($sql) === TRUE){ ?>
      <h1>Record updated successfully.</h1>
      <?php echo $cd_title; ?>
      <?php echo $record->affected_rows ?> 
      <p> record was updated in the database.</p></br>
   <?php } else { ?>
    <p>Error updating the record: </p> <?php $db->error; ?>
   <?php }; ?>


    <hr>
    <a class="btn btn-primary" href="index.php" role="button">Go Back Home</a>
    </div>
    <?php include '_includes/main-script.php';?>
  </body>
</html>

如果你在edit_confirm.php中注意到我做了一个var_dump来查看变量中的值是什么,它显示为空。

我需要帮助。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

人们更好的方法是让测试记录是否正在更新

变得简单

formsample.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>

    <body>
    <?php 
    include("connection.php");
    $id =  $_GET['id'];
    $query= "select * from clients where id = '$id'";

    $sql = mysqli_query($connect, $query);
    $result = mysqli_fetch_assoc($sql);
    ?>
    <form action="process.php" method="post">
    <input type="text" name="name" id="name" value="<?php echo $result['name'] ?>" />
    <input type="text" name="email" id="email" value="<?php echo $result['email'] ?>" />
    <input type="hidden" name="id" id="id" value="<?php echo $id?>" />
    <input type="submit" />
    </form>
    </body>
    </html>

process.php

        <?php 
    include("connection.php");
    $id = $_POST['id'];
    $name = $_POST['name'];
    $email= $_POST['email'];
    $query = "UPDATE clients set name= '$name', email ='$email' where id = '$id'";
    $sql = mysqli_query($connect, $query);


    ?>

答案 1 :(得分:1)

<a href="edit_confirm.php?id=<?echo $row['cd_id'];?>" type="submit" class="btn btn-primary">Update Record</a>

这不是提交表单的正确方法 - 它根本不起作用。

您需要有一个表单开始和结束标记,目标地址位于表单元素的action属性中,方法也在那里,并且应该发布此表单(method="POST")。在您的代码中,您有一个链接,您应该有一个提交输入,因此它不会提交数据,它只会将您重定向到该URL。你应该有这样的东西:

<input type="submit" value="Update Record" />

http://www.w3schools.com/html/html_forms.asp