使用简单的php和mysql更新数据库

时间:2014-11-03 17:18:31

标签: php mysqli

我有一个非常简单的表单无效。我想要完成的是当用户点击更新按钮时,它们会显示一个填写了信息的表单。当他们更改信息并单击更新时,会将它们发送回主表单并显示所有更改。一切正常但更新。当您更改某些内容并单击更新时,不会更改任何内容。这是更新表单代码:

<h4>Update Record</h4>
<?PHP
$con=mysqli_connect("localhost", "root", "", "customers");

//check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysql_connect_error();
 }
 ?>
 <form action="update_process.php" method="get">
   Band: <input type="text" name="artist" value="<?php echo $_GET['artist'] ?>"/><br/>
   Album: <input type="text" name="title" value="<?php echo $_GET['title'] ?>" /><br/>
   Format: <select name="format">
      <option value="Compact Disc" name="compact disc">compact disc</option>
      <option value="Album" name="album">album</option>
      <option value="Cassette" name="cassette">cassette</option>
      <option value="MP3" name="mp3">mp3</option>
       </select><br/>
    Notes: <TEXTAREA NAME="notes" ROWS="3" COLS="30"><?php echo $_GET['notes'] ?>
      </TEXTAREA><br/>
   <input type="submit" value="Update" />
   </form>

这是update_process.php文件的代码:

 <?php
 $artist = $_GET['artist'];
 $title = $_GET['title'];
 $format = $_GET['format'];
 $notes = $_GET['notes'];

 //create connection to DB
 $con=mysqli_connect("localhost", "root", "", "customers");

  //check connection
  if (mysqli_connect_errno()) {
     echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }

  $sql = "UPDATE music SET title='$title', artist='$artist', format='$format', notes='$notes'
     WHERE id='$id'";

  if ($con->query($sql) === TRUE) {
     header('Location:index.php');
   } else {
      echo "Error: " . $sql . "<br>" . $con->error;
    }
  ?>

3 个答案:

答案 0 :(得分:1)

在WHERE子句中你说id ='$ id',但是$ id值设置在哪里? 我认为$ id没有价值。

答案 1 :(得分:0)

我发现您的代码存在一些问题:

1 - 其中定义了$id

2 - 我猜id是一个整数字段,因此不需要'周围的$id;

答案 2 :(得分:0)

您混合了基于对象和基于功能的编程。你从基于功能开始,所以我会告诉你那样。要查询数据库,您需要运行:

mysqli_query($con,$sql);

而不是:

$con->query($sql)

您的代码还有其他一些安全方面的问题,但如果您不在意,请跳过我的其余部分。

在使用它们之前,您没有检查是否存在这些GET参数。使用:

if(isset($_GET['artist'],$_GET['track'],...)) {...}

您也没有转义查询字符串,使您的网站容易受到SQL注入攻击。使用:

$artist = mysqli_real_escape_string($con,$_GET['artist']);
祝你好运!只需阅读PHP文档,确保对整个脚本采用对象或函数方法。