首页 > 解决方案 > 声明变量运行变量

问题描述

我正在尝试使用创建一个功能搜索字段ProductID,然后使用它来显示产品表中ProductID存在的行。我遇到的问题是,如果我有如下代码:下面的提交按钮执行$deleteprod$deltesale代码,它应该(根据我的理解)提交ProductID变量。

<form action="delete.php" method="post">
    <input value="" placeholder="Product ID" name="ProductID" type="text"/> <br>
    <input type="submit" onclick="" value="Search"/
</form>
<?php 

    $ProductID = $_POST['ProductID'];
    $db = mysql_connect("localhost:3307", "root", "usbw");
    $deleteprod = mysql_query("DELETE FROM gameshop.product WHERE (product.ProductID = '$ProductID')");
    $deletesale = mysql_query("DELETE FROM gameshop.sale WHERE (sale.ProductID = '$ProductID')");
    $deletebutton = "<button onclick=\"$deletesale; $deleteprod; location.href='database.php'\" style='width:200px; background-color:red;'>Delete Row</button>"; 
    mysql_select_db("gameshop",$db);
    $result = mysql_query("SELECT product.*, sale.Price
        FROM gameshop.product, gameshop.sale 
        WHERE (product.ProductID = '$ProductID' AND sale.ProductID = '$ProductID')",$db);
    if (!$result){
        print mysql_rror();
    }
    elseif ($myrow = mysql_fetch_array($result)){
        echo "<table style='text-align:center;' border=1>\n";
        echo "<tr><td>Product ID</td><td>Product Name</td>", "<td>Publisher</td><td>Developer</td>", "<td>Release Date</td><td>Stock</td>", "<td>Console</td>       <td>Rank</td><td>Price</td><td>Delete?</td></tr>\n";
        do{
            printf("<tr><td>%4d</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%1d</td><td>%s</td><td>%1d</td><td>%2d</td><td>%s</td></tr>\n", // %s are syntax (string)
            $myrow["ProductID"], $myrow["ProductName"], $myrow["Publisher"], $myrow["Developer"], $myrow["ReleaseDate"], $myrow["Stock"], $myrow["Console"], $myrow["Rank"], $myrow["Price"], $deletebutton);
        }
        while ($myrow = mysql_fetch_array($result));
        echo "</table>\n";
    }
    mysql_close($db);
?>

如果我将 移到变量$db = MySQL_connect("localhost:3307", "root", "usbw");下方$delete,则不会发生此问题,它会创建单行表。但是,当尝试单击 时$deletebutton,代码不会执行,也不会删除任何行。我究竟做错了什么?

标签: phpmysql

解决方案


问题是,当您单击按钮时,您调用的是 JavaScript,而不是 PHP。
我认为你可以用你的deletesaledeleteprod使用. 所以这个文件会有一个这样的php脚本:Product_IDpost

$ProductID = $_POST['ProductID'];
$db = mysql_connect("localhost:3307", "root", "usbw");
mysql_select_db("gameshop",$db);
$result = mysql_query("SELECT product.*, sale.Price
    FROM gameshop.product, gameshop.sale 
    WHERE (product.ProductID = '$ProductID' AND sale.ProductID = '$ProductID')",$db);
if (!$result){
    print mysql_error();
}
elseif ($myrow = mysql_fetch_array($result)){
    echo "<table style='text-align:center;' border=1>\n";
    echo "<tr><td>Product ID</td><td>Product Name</td>", "<td>Publisher</td> <td>Developer</td>", "<td>Release Date</td><td>Stock</td>", "<td>Console</td>       <td>Rank</td><td>Price</td><td>Delete?</td></tr>\n";
    do{
        printf("<tr><td>%4d</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%1d</td><td>%s</td><td>%1d</td><td>%2d</td><td>",$myrow["ProductID"], $myrow["ProductName"], $myrow["Publisher"], $myrow["Developer"], $myrow["ReleaseDate"], $myrow["Stock"], $myrow["Console"], $myrow["Rank"], $myrow["Price"]);
        printf "<form method=\"post\" action=\"delete_page.php\"><input type=\"text\" style=\"display:none\" name=\"ProductID\" value=\"$ProductID\"/><input type=\"submit\" value=\"delete product\"/></form>"
        printf "</td></tr>"
    }
    while ($myrow = mysql_fetch_array($result));
    echo "</table>\n";
}
mysql_close($db);

然后你就会delete_page.php

$ProductID = $_POST['ProductID'];
$db = mysql_connect("localhost:3307", "root", "usbw");
mysql_select_db("gameshop",$db);
mysql_query("DELETE FROM gameshop.product WHERE (product.ProductID = '$ProductID')");
mysql_query("DELETE FROM gameshop.sale WHERE (sale.ProductID = '$ProductID')");
mysql_close($db);

然后你可以添加一个链接回到主页。

一定要检查错别字:)


推荐阅读