【问题标题】:cannot delete row from database using php无法使用php从数据库中删除行
【发布时间】:2014-10-01 14:33:57
【问题描述】:

我无法从数据库中删除任何记录。我找不到任何错误。

我已经从另一个表中删除了一些记录,只是稍作更改,但在这里它不起作用。下面是应用删除查询的代码。表的名称是我要删除记录的地方,但这里没有发生。

deleteSupplier.php

<?php
mysql_connect("localhost","root","");
mysql_select_db("db_kiln");
$id1 = $_GET['id1'];
$query0 = "DELETE FROM tbl_supplier WHERE sup_id='$id1'";
if(mysql_query($query0)){
echo "<script>window.open('supplier_connect.php','_self')</script>";
}
else{
    echo "Not deleted";
    }
?>

这是我从数据库中获取数据并针对每条记录设置删除按钮的文件。当我单击按钮时,它不会删除记录并显示错误消息。我找不到任何错误,我认为此代码中存在逻辑错误。请帮忙。

supplier_connect.php

<?php
mysql_connect("localhost","root","");
mysql_select_db("db_kiln");

$query = "Select * from tbl_supplier";
$run = mysql_query($query);
echo "<table border='1'>
<tr>
<th>Supplier Id</th>
<th>Name</th>
<th>Contact Number</th>
<th>Quotation </th>
<th>Remove</th>
</tr>";
while($row = mysql_fetch_assoc($run)){
echo "<tr>";
echo "<td>" . $row['sup_id'] . "</td>"; 
echo "<td>" . $row['sup_name'] . "</td>";
  echo "<td>" . $row['sup_contact'] . "</td>";
 echo "<td>" .$row['sup_quotation']. "</th>";
  echo '<td><a href="deleteSupplier.php?id1='.$row['sup_id'].'">Delete</a></td>';
  echo "</tr>";
}
echo "</table>";
?>

【问题讨论】:

  • 整个脚本都写了 SQL 注入。也请不要使用 mysql_* 函数、用户 mysqli_* 函数或 PDO
  • 也许您不允许删除某些内容?您是否使用您的 root 帐户执行此操作?
  • 我有数据库连接到它并从数据库中获取数据。deleteSupplier.php 中的 else 部分运行并显示错误消息“未删除”
  • mysql_* 函数不再支持,它们是 officially deprecated不再维护,将在 removed未来。您应该使用PDOMySQLi 更新您的代码,以确保您的项目在未来的功能。
  • 您在数据库代码中的任何地方都绝对没有错误处理,只需假设没有任何事情会失败。你对sql injection attacks 敞开心扉。另外,删除查询只有在以某种方式失败时才会返回 false - 不删除任何内容都不是失败。删除 0 行的删除查询仍然成功,并将返回非假值

标签: php mysql


【解决方案1】:

您可能拥有引用另一个表的供应商 ID,并且在 DELETE 时,没有设置任何操作。您需要设置选项“在 DELETE 时:级联或 SET NULL”。我会选择 SET NULL,否则你的整个参考记录也会被删除。

编辑:检查您的联系人和报价单之间的关系,查看您的供应商 ID 的去向。

【讨论】:

    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多