删除一行sql php

时间:2015-12-16 20:31:41

标签: php mysql

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

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

  

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

但是,我的连接配置没问题。

$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'>";
}

  ?>

2 个答案:

答案 0 :(得分:3)

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注入攻击很容易 最普遍的安全问题全球。如果他们感觉足够14,那么任何人都可以在一个$_POST中删除所有数据。

答案 1 :(得分:1)

首先:您正在混合mysql_query()mysqli_query()来电。如果你必须使用mysql / mysqli坚持mysqli。 “i”用于“改进”。

第二:如果可以,我真的建议您开始使用PDO对象。使用它来防止SQL注入更加安全。永远不要相信任何你没有硬编码的变量放入你的查询而不先准备语句并绑定变量。

见这里:

PDO Tutorial for MySQL Developers

Why you should...

PHP.net reference