php - 声明变量运行变量
问题描述
我正在尝试使用创建一个功能搜索字段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
,代码不会执行,也不会删除任何行。我究竟做错了什么?
解决方案
问题是,当您单击按钮时,您调用的是 JavaScript,而不是 PHP。
我认为你可以用你的deletesale
和deleteprod
使用.
所以这个文件会有一个这样的php脚本:Product_ID
post
$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);
然后你可以添加一个链接回到主页。
一定要检查错别字:)
推荐阅读
- java - Springboot SpringWebFlux SecurityConfig 从属性文件加载凭据
- c - 如果字符文字总是 int 类型,为什么我们在 C 中有 char 类型?C中的整个类型的char不是多余的吗?
- r - 如何对不同行的值求和并汇总为一行(R)
- sql - 如果一行不为空,但仍获得该组中为空的其他结果,则 SQL 返回结果
- javascript - 为什么 JS 不在“for in 循环”中强制 i 的值?
- ios - 使用 Agora Kit 进行语音通话
- javascript - 如何在有条件的情况下使用承诺中的方法?
- python-3.x - 如何在 Mac 上安装 python3
- arrays - 在 SSIS 中使用 JSONPath 表达式获取每个子节点及其值
- django - Django:在 sqlite3 的模型字段中存储字符串数组(文件路径)