我有一张表格,其中使用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'>";
}
?>
答案 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注入更加安全。永远不要相信任何你没有硬编码的变量放入你的查询而不先准备语句并绑定变量。
见这里: