【问题标题】:Updating information on a MySQL database from a PHP site从 PHP 站点更新 MySQL 数据库的信息
【发布时间】:2014-12-08 16:48:31
【问题描述】:

我一直在这里尝试各种教程和解决方案,但我无法让它发挥作用。请帮忙!


** 更新 #1 **
这是我在运行代码时收到的错误:“插入中发生错误:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解要使用的正确语法在第 1 行的 '' 附近"


** 更新 #2 **
这是显示表中所有内容的页面: 编辑浏览.php

`

  $sql = "SELECT * FROM inventory";
  $result = $connection->query($sql);

  if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
      echo "
      <img src=$row[image] id='productImage'> <br>
      product: $row[product] <br>
      category: $row[category] <br>
      seller: $row[seller] <br>
      <a href='edit.php?id=$row[id]'>Edit</a>
      <hr>
      ";
    }
  } else {
    echo "No Results";
  }
  $connection->close();

`

这是当您单击上面的编辑按钮时显示的页面:edit.php

`

  <?php
  // Connection code..etc..


  $sql = "SELECT * FROM inventory WHERE id=".$_REQUEST['id'];
  $result = $connection->query($sql);

  if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
  } else {
    echo "No Results";
  }
  $connection->close();

?>



<div class="row" id="mainSection">

  <form action="update.php" method="post">

    <input type="hidden" name="id" value="<?=$id?>">

    <h3>Image:</h3>
        <input type="text" name="image" value="<?=$row['image']?>">

    <h3>Product:</h3>
        <input type="text" name="product" value="<?=$row['product']?>">

    <h3>Category:</h3>
        <input type="text" name="category" value="<?=$row['category']?>">

    <h3>Seller:</h3>
        <input type="text" name="seller" value="<?=$row['seller']?>">

    <br>
    <br>

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

  </form>
  <br>
  <a href="admin.php" id="backButton">Back</a>

</div>

`

这是当您单击上面的“更新我的记录”按钮时运行的文件:update.php

'

$id= $_POST['id'];
$image = $_POST['image'];
$product = $_POST['product'];
$category = $_POST['category'];
$seller = $_POST['seller'];



$sql = "UPDATE inventory set image='$image', product='$product', category='$category', seller='$seller' WHERE id = $id";


if ($connection->query($sql) === true) {
  echo "Inserted Successfully";
} else {
  echo "Error occured in the insert: " . $connection->error;
}

 $connection->close();

'

【问题讨论】:

  • 您使用的语法不正确。查找UPDATE 语法的一些示例。
  • 正如在别处提到的,您正在为 UPDATE 语句使用 INSERT 语法。你需要改变这一点。如果您将变量直接传递给查询,您也会面临 SQL 注入的风险。我会查看准备好的语句:MySQLi php.net/manual/en/mysqli.quickstart.prepared-statements.php 或 PDO php.net/manual/en/pdo.prepared-statements.php
  • @abl 更新了我的帖子!
  • @versalle88 更新了我的帖子!
  • 您可能缺少某些值和/或未设置默认值。您可以在 else 语句中回显 $sql 以便我们可以看到它尝试运行的确切查询吗? echo '发生错误:' 。 $连接->错误。 ' 在查询中:' 。 $sql;

标签: php mysql database forms


【解决方案1】:

你的 sql 中有句法问题:

$sql = "UPDATE inventory set image='$image', product='$product', category='$category', seller='$seller' WHERE id = $id";

此外,您还需要验证 $id 是否具有正确的值。因为如果它为空或 null,您的查询将失败。

如果要插入数据,可以使用如下查询:

$sql = "INSERT INTO inventory (image, product, category, seller) VALUES ('$image', '$product', '$category', '$seller')";

在你的 edit.php 视图中试试这个:

<?php
    $sql = "SELECT * FROM inventory WHERE id=".$_REQUEST['id];
      $result = $connection->query($sql);

      if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
      } else {
        echo "No Results";
      }
      $connection->close();
?>
<div class="row" id="mainSection">
  <form action="update.php" method="post">
    <input type="hidden" name="id" value="value="<?php echo $row['id']?>"">
    <h3>Image:</h3>
        <input type="text" name="image" value="<?php echo $row['image']?>">
    <h3>Product:</h3>
        <input type="text" name="product" value="<?php echo $row['product']?>">
    <h3>Category:</h3>
        <input type="text" name="category" value="<?php echo $row['category']?>">
    <h3>Seller:</h3>
        <input type="text" name="seller" value="<?php echo $row['seller']?>">
    <br><br>
    <input type="submit" value="Update My Record">
  </form>
  <br>
  <a href="admin.php" id="backButton">Back</a>    
</div>

【讨论】:

  • 我更新了 3 块代码以显示所有内容。意外遗漏了一部分。
  • 你必须在你的表单中设置它的值 of $id 是一个值的地方来自一个选择查询
  • 好的,你必须像这样将 $id 作为参数传递给你的 edit.php 视图:edit.php?id=$row[id] 然后在你的 edit.php 视图中你需要做用于检索与该行对应的数据并将所有值设置为表单元素的选择
  • 我更新了整个帖子,以显示我的代码以及您告诉我的更改和新错误。我唯一没有添加的是你告诉我在我的edit.php中做的“选择”并在我的表单元素中设置所有值。你能进一步解释一下吗?抱歉,我对此很陌生,正在努力学习。
  • 上次更新了,现在好多了,因为它会在字段中显示数据库中已经存在的信息以进行编辑。当我按下更新按钮时,它仍然出现上面相同的错误,我更新了帖子中的所有内容供您查看。
【解决方案2】:
$sql = "SELECT * FROM inventory";
  $result = $connection->query($sql);

  if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
      echo "
      <img src=$row['image'] id='productImage'> <br>
      product: $row['product'];<br>
      category: $row['category']; <br>
      seller: $row['seller'] ;<br>
      <a href="edit.php?id=$row['id']">Edit</a>
      <hr>
      ";
    }
  } else {
    echo "No Results";
  }
  $connection->close();

EDIT.PHP

<div class="row" id="mainSection">
  <?php $id = $_REQUEST['id']; ?>
  <form action="update.php" method="post">

    <input type="hidden" name="id" value="<?=$id?>">

    <h3>Image:</h3>
        <input type="text" name="image">

    <h3>Product:</h3>
        <input type="text" name="product">

    <h3>Category:</h3>
        <input type="text" name="category">

    <h3>Seller:</h3>
        <input type="text" name="seller">

    <br>
    <br>

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

  </form>
  <br>
  <a href="admin.php" id="backButton">Back</a>

</div>

UPDATE.PHP

<?php
$id= $_POST['id'];
$image = $_POST['image'];
$product = $_POST['product'];
$category = $_POST['category'];
$seller = $_POST['seller'];

$sql = "UPDATE inventory set image='".$image."', product='".$product."', category='".$category."', seller='".$seller."' WHERE id = ".$id." ";

if ($connection->query($sql) === true) {
  echo "Inserted Successfully";
} else {
  echo "Error occured in the insert: " . $connection->error;
}

 $connection->close();

【讨论】:

  • 这样就摆脱了错误,谢谢!但是当我更新它时,它说它运行成功,但表中没有任何更新?
  • 试试print_r($_POST);&检查所有值是否都来了。
  • 我应该把print_r($_POST);放在哪里?
  • 对不起,我想我还是把print_r($_POST); 放错了地方。该表没有更新,但在成功页面上显示了我输入的所有信息。您能否更新答案的“update.php”部分,以便我看到?抱歉,我是编程新手。
  • 感谢您的帮助,我现在已经弄清楚了。我很感激!
【解决方案3】:

您需要为id 设置一个值,然后在查询中使用$_POST['id']

【讨论】:

  • 我更新了第三块代码以显示所有内容,我意外遗漏了一部分。 “$id=$_POST['id'];”应该是什么设置正确?
【解决方案4】:

首先更新查询的sql语法是错误的。其次,表单中的 id 中没有设置值。因此,当您发布表单时,该值将为空。

【讨论】:

  • 更新的正确语法是什么?我认为表单中的 "value="=$id?>" 设置了 id 的值?
猜你喜欢
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 1970-01-01
  • 2016-01-15
  • 2011-07-10
  • 2017-09-28
  • 2021-06-23
相关资源
最近更新 更多