删除一行sql.php


Deleting a row sql php

我有一个表格,其中使用INNER JOIN显示了不同表格的日期。

我想添加一个可以删除一行的字段。我尝试了几个教程,但我的代码出现了问题。每次我试图删除一行,它都会说:

拒绝用户访问(使用密码:NO)

但是,我的连接配置还可以。

$query="SELECT products.id, products.product_name, products.product_description, 
products.product_price, collections.collection_name, collections.collection_season,
collections.collection_year
FROM products
INNER JOIN products_collections ON products.id = products_collections.product_id
INNER JOIN collections ON collections.id = products_collections.collection_id
ORDER BY products.product_price";
$result=mysqli_query($con,$query);
while ($row=mysqli_fetch_array($result)){
echo "<tr><td>".$row["id"]."</td><td>".$row["product_name"]."</td>
<td>".$row["product_description"].
"</td><td>".$row["collection_name"]."</td><td>".$row["collection_season"]."</td>
<td>".$row["collection_year"]."</td><td>".$row["product_price"].
" USD</td><td><a href='table.php?del=$row[id]'>Delete</a></td></tr>";
}
  if (isset($_GET['del'])){
    $id=$_GET['del'];
    $s="DELETE FROM products WHERE id='$id'";
    $res=mysql_query($s) or die ("Failed ".mysql_error());
    echo "<meta http-equiv='refresh' content='0;url=table.php'>";
}
  ?>

1.)您已连接到SQL数据库?

2.)您的SQL用户已通过身份验证?

3.)您已正确查询到唯一的,并且包含LIMIT

DELETE FROM table WHERE id='987' LIMIT 1;

4.)您的SQL用户是否有权在SQL中使用DELETE命令?


哇,刚刚注意到你在而不是转义数据永远不要相信客户

MySQL API(旧版,使用下面的MySQLi)

$id = mysql_real_escape_string($_GET['id']);

MySQLi API

$id = mysqli_real_escape_string($database,$_GET['id']);

您必须在项目中完成所有SQL查询,并确保您正在逃离一切,因为SQL注入攻击很容易成为全球最普遍的安全问题。任何人都可以在一个$_POST中抹掉你的所有数据,如果他们感觉14岁就足够了。

首先:您正在混合mysql_query()mysqli_query()调用。如果必须使用mysql/mysqli,请坚持使用mysqli。"i"表示"改进"。

第二:如果可以的话,我真的建议你开始使用PDO对象。使用它来保护不受SQL注入的影响要安全得多。如果不先准备语句并绑定变量,千万不要相信任何未硬编码的变量。

请参阅此处:

MySQL开发人员PDO教程

为什么你应该。。。

PHP.net参考