我有一个表格,其中使用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参考