Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP&;从数据库中删除数据;JavaScript_Javascript_Php_Mysql_Database_Window.location - Fatal编程技术网

使用PHP&;从数据库中删除数据;JavaScript

使用PHP&;从数据库中删除数据;JavaScript,javascript,php,mysql,database,window.location,Javascript,Php,Mysql,Database,Window.location,我正在处理一个PHP文件。我试图制作一个表,显示数据库中的产品列表。还将有一个用于删除任何产品的按钮。我使用javascript从数据库中删除产品。我已经写了代码,没有发现任何错误。单击“删除”按钮时,它会显示确认框,但不会删除产品。代码如下: <?php $con=mysql_connect("localhost","root",""); mysql_select_db("grocery_shop",$con); error_reporting(E_ALL^E_NOTICE); se

我正在处理一个PHP文件。我试图制作一个表,显示数据库中的产品列表。还将有一个用于删除任何产品的按钮。我使用javascript从数据库中删除产品。我已经写了代码,没有发现任何错误。单击“删除”按钮时,它会显示确认框,但不会删除产品。代码如下:

<?php

$con=mysql_connect("localhost","root","");
mysql_select_db("grocery_shop",$con);

error_reporting(E_ALL^E_NOTICE);
session_start();


    $sql = mysql_query("select * from products");


if($_GET['did']){
    mysql_query("delete from products where product_id='$_GET[did]'");
    header("Location: product.php");
}

?>
<table border="1px" style="width:100%">
    <tr>
    <th>Serial No</th>
    <th>Product Name</th>       
    <th>Product Type</th>
    <th>Quantity</th>
    <th>Price</th>
    <th>Delete Product</th>
  </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>

    <?php
    $i=1;
    while ($u = mysql_fetch_array($sql)) {
        ?>
        <tr>
            <td><?php echo $i; ?></td>
            <td><?php echo $u['product_name'];?></td>
            <td><?php echo $u['product_type'];?></td>
            <td><?php echo $u['quantity'];?></td>
            <td><?php echo $u['price'];?></td>
            <td><?php echo "<a href=\"javascript:delproduct(id=$u[product_id])\">Delete</a>";?></td>

        </tr>
        <?php
    $i++;
    }
    ?>

    <script>
    function delproduct(id){
        var msg = confirm("Are you sure you want to delete this product?");

    if (msg) {
        window.location = "product.php?did="+product_id;
    }
    }
    </script>
</table>
您忘记了$\u GET[did]中的“”号:

mysql_query("delete from products where product_id='{$_GET['did']}'");
此外,正如@chris85所指出的,直接使用$\u GET或$\u POST不是一个好主意,请记住在查询中使用这些值之前对其进行清理

$did = filter_input(INPUT_GET, 'did', FILTER_SANITIZE_NUMBER_INT);
mysql_query("delete from products where product_id={$did}");

您应该尝试:delproduct($u[product\u id])而不是delproduct(id=$u[product\u id])

mysql\u查询(“从产品中删除,其中产品id=”。$\u GET['did'].“”);
而($u=mysql\u fetch\u数组($sql)){
?>

问题出在javascript中,产品id不存在

   if (msg) {
        window.location = "product.php?did="+id;
    }
出于调试目的,请尝试用您的代码替换此代码,并让我们知道您收到的错误消息

if($_GET['did']){
    mysql_query("delete from products where product_id='".$_GET['did']."'");
    echo "delete from products where product_id='".$_GET['did']."'";
    echo mysql_errno() . ": " . mysql_error() ;    
    die();
    //header("Location: product.php");
}
此外,还尝试在不使用单引号的情况下运行查询,我假设product_id是一个整数


所以
mysql\u查询(“从产品中删除,其中product\u id=“.$\u GET['did']);

您应该写下您已更正的内容。还有SQL注入说明。您可以使用var\u dump($\u GET)吗?是否报告了任何错误?没有…一切正常。只是无法删除数据。它是否重定向到
product.php
?是的…页面重定向到product.php.Off-topic,但很重要:请注意php的
mysql\u query()和相关函数是ObSelt。它们在当前支持的PHP版本中被弃用,由于本月发布,将完全在新版本中删除。您应该强烈考虑将代码转换为使用更新近的<代码> MySqLI< /COD>或<代码> PDO库。n不显示确认消息。您能再试一次吗?我已编辑了答案。在$\u GET['did']上显示谢谢…我已经解决了该问题。但您的解决方案是正确的。问题在我的javascript中。非常感谢您:)
   if (msg) {
        window.location = "product.php?did="+id;
    }
if($_GET['did']){
    mysql_query("delete from products where product_id='".$_GET['did']."'");
    echo "delete from products where product_id='".$_GET['did']."'";
    echo mysql_errno() . ": " . mysql_error() ;    
    die();
    //header("Location: product.php");
}