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


Updating a database with simple php and mysql

我有一个非常简单的表单不起作用。我试图实现的是,当用户单击更新按钮时,他们会收到一份填写了信息的表格。当他们更改信息并单击更新时,他们会被发送回主窗体,并显示所有更改。除了更新,一切都正常。当您更改某些内容并单击"更新"时,不会有任何更改。这是更新表单代码:

<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;
    }
  ?>

在WHERE子句中,您说WHERE id="$id",但$id值集在哪里?我认为$id没有价值。

我看到您的代码有一些问题:

1-id $id在哪里定义?

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

您已经混合了基于对象和基于函数的编程。你是从基于函数开始的,所以我会向你展示这一点。要查询数据库,您需要运行:

mysqli_query($con,$sql);

而不是:

$con->query($sql)

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

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

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

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

$artist = mysqli_real_escape_string($con,$_GET['artist']);

祝你好运!只需阅读PHP文档,确保对整个脚本采用对象或函数方法。