使用 _POST 更新 mysql 中的信息
Update info in mysql using _POST
我有这段代码,它除了添加到我的数据库中之外什么都不做,并且只添加了商品盎司和零售价。关于我哪里出错的任何想法?
--update.php---
<?php
session_start(); // start session cookies
require("Login.class.php"); // pull in file
$login = new Login; // create object login
$login->authorize(); // make user login
?>
<style type="text/css">
body {background-color:#42520e; color: #f0cb01;
}
th {background: URL(http://www.athenahealth.com/_img/boxes/carousel_bg.png);}
p {color:blue;}
a:link {color: #f0cb01; text-decoration: underline; }
a:active {color: #f0cb01; text-decoration: underline; }
a:visited {color: #f0cb01; text-decoration: underline; }
a:hover {color: #f0cb01; text-decoration: none; }
</style>
<?php
$retail=$_REQUEST['retail'];
$id=$_REQUEST['id'];
$name=$_REQUEST['name'];
$upc=$_REQUEST['upc'];
$ounces=$_REQUEST['ounces'];
define("HOST", "localhost");
$retail=$_REQUEST['retail'];
$id=$_REQUEST['id'];
$name=$_REQUEST['name'];
$upc=$_REQUEST['upc'];
$ounces=$_REQUEST['ounces'];
?>
Admin Panel to Update Keywords
<hr>
<table>
<tr><td valign="top"><br /><br />
<td>
Your are editing information for Product #: <b><? echo $_REQUEST['id']; ?></b>
<form method="post" action="update_ac.php">
<table> <tr><br /></tr>
<tr><td> Product #: </td><td> <input type="text" name="id" id="id" value="<? echo $_REQUEST['id']; ?>">* Enter Keyword as it currently appears<br></td></tr>
<tr><td> Name: </td><td><input type="text" name="name" id="name" value="<? echo $_REQUEST['name']; ?>">* Enter New Information<br></td></tr>
<tr><td> Suggested Retail:</td><td> <input type="text" name="retail" id="retail" value="<? echo $_REQUEST['retail']; ?>">* New Phone Number<br></td></tr>
<tr><td> Ounces: </td><td> <input type="text" name="ounces" id="ounces" value="<? echo $_REQUEST['ounces']; ?>">* Enter new block description here. <br></td></tr>
<tr><td> UPC: </td><td> <input type="text" name="upc" id="upc" value="<? echo $_REQUEST['upc']; ?>">* Enter new block description here. <br></td></tr>
<tr><td> </td><td align="left"> <input type="submit" name="submit" value="Submit Data"></td></tr>
</table>
</form>
</td></tr>
</table> <br />
<a href="index.php">Add Keyword</a> | <a href="../admin">Back to search form</a> |
<?php
echo '<pre>';
print($retail);
echo '</pre>';
?>
<a href="index.php?action=clear_login">logout</a>
</body>
这是它使用的更新 link,并将其传递给 update_ac.php
<?php
session_start(); // start session cookies
require("Login.class.php"); // pull in file
$login = new Login; // create object login
$login->authorize(); // make user login
?>
<style type="text/css">
body {background-color:#42520e; color: #f0cb01;
}
th {background: URL(http://www.athenahealth.com/_img/boxes/carousel_bg.png);}
p {color:blue;}
a:link {color: #f0cb01; text-decoration: underline; }
a:active {color: #f0cb01; text-decoration: underline; }
a:visited {color: #f0cb01; text-decoration: underline; }
a:hover {color: #f0cb01; text-decoration: none; }
</style>
<?php
$retail=$_REQUEST['retail'];
$id=$_REQUEST['id'];
$name=$_REQUEST['name'];
$upc=$_REQUEST['upc'];
$ounces=$_REQUEST['ounces'];
define("HOST", "localhost");
$retail=$_REQUEST['retail'];
$id=$_REQUEST['id'];
$name=$_REQUEST['name'];
$upc=$_REQUEST['upc'];
$ounces=$_REQUEST['ounces'];
// Database user
define("DBUSER", "root");
// Database password
define("PASS", "Password!");
// Database name
define("DB", "SnyderLanceSku");
############## Make the mysql connection ###########
$conn = mysql_connect(HOST, DBUSER, PASS) or die('Could not connect !<br />Please contact the site\'s administrator.');
$db = mysql_select_db(DB) or die('Could not connect to database !<br />Please contact the site\'s administrator.');
mysql_query("UPDATE products SET UPC='$upc', Name='$name', Item_Ounces='$ounces' WHERE UPC='$upc' ") or die (mysql_error());
?>
<table>
<tr><td valign="top"><br /><br />
<td>
<table> <tr><b>Data Updated Successfully</b></tr>
<tr><td> Keyword: </td><td><? echo $id; ?><br></td></tr>
<tr><td> Block?: </td><td><? echo $name; ?><br></td></tr>
<tr><td> Phone #:</td><td><?php echo $upc; ?><br> </td></tr>
<tr><td> Reason: </td><td><? echo $retail; ?></td></tr>
<tr><td> Reason: </td><td><? echo $ounces; ?></td></tr>
</table>
</form>
</td></tr>
</table>
<a href="./">Go Back</a>
我不太确定在哪里看这里...感谢任何帮助。
编辑:
这是两个脚本。它几乎可以正常工作。现在唯一的问题是它没有更新正确的行。它添加一个新行而不是更新 id 或者在这种情况下更新 UPC
您的这段代码有一些问题,从您提供的代码看来,您发送的似乎不是 POST
请求,而是发送 GET
请求您正在通过 URL 传递它们。所以首先,将 $_POST
更改为 $_GET
。
你的查询也是错误的。
$sql = "UPDATE `products` SET ".implode(", ", $update)."WHERE Product_sku = '$ID'";
应该是,
$sql = "UPDATE `products` SET ".implode(", ", $update)."WHERE Product_sku = '$id'";
我在你的代码中没有看到 $ID
变量,但我确实看到了 $id
变量。所以你也需要改变它。
编辑 1
此外,打开 error reporting
使调试更容易。
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(-1);
编辑 2
正如 Fred 所说,您在尝试从 HTML 获取数据到 PHP 时输入错误。
在您的 product 输入中,您将名称值设置为 Product
,就像您对 Name
输入所做的一样。然而,在您的 PHP 中,您却在 $name=$_GET['name'];
而它应该是 $name=$_GET['Name'];
。
您应该采用熟悉的命名约定,例如驼峰式命名,这将使这些难以发现的错误更难出现。我个人使用 PSR 编码约定。所以尝试采用一个并坚持下去。
另一件事,因为你之前从未发布过你的表单我建议你使用 $_GET
,但是对于某些事情(例如表单数据)你应该将它改回 $_POST
作为你的表单method="post"
.
编辑 3
您还应该养成检查变量是否实际包含值并正确设置的习惯,这称为验证。我会亲自检查是否已按下提交按钮(if (isset($_POST['yourSubmitButtonNameValue']))
然后验证该 if 语句中的其余字段。这样,您就知道您添加到数据库中的输入是有效的。
我有这段代码,它除了添加到我的数据库中之外什么都不做,并且只添加了商品盎司和零售价。关于我哪里出错的任何想法?
--update.php---
<?php
session_start(); // start session cookies
require("Login.class.php"); // pull in file
$login = new Login; // create object login
$login->authorize(); // make user login
?>
<style type="text/css">
body {background-color:#42520e; color: #f0cb01;
}
th {background: URL(http://www.athenahealth.com/_img/boxes/carousel_bg.png);}
p {color:blue;}
a:link {color: #f0cb01; text-decoration: underline; }
a:active {color: #f0cb01; text-decoration: underline; }
a:visited {color: #f0cb01; text-decoration: underline; }
a:hover {color: #f0cb01; text-decoration: none; }
</style>
<?php
$retail=$_REQUEST['retail'];
$id=$_REQUEST['id'];
$name=$_REQUEST['name'];
$upc=$_REQUEST['upc'];
$ounces=$_REQUEST['ounces'];
define("HOST", "localhost");
$retail=$_REQUEST['retail'];
$id=$_REQUEST['id'];
$name=$_REQUEST['name'];
$upc=$_REQUEST['upc'];
$ounces=$_REQUEST['ounces'];
?>
Admin Panel to Update Keywords
<hr>
<table>
<tr><td valign="top"><br /><br />
<td>
Your are editing information for Product #: <b><? echo $_REQUEST['id']; ?></b>
<form method="post" action="update_ac.php">
<table> <tr><br /></tr>
<tr><td> Product #: </td><td> <input type="text" name="id" id="id" value="<? echo $_REQUEST['id']; ?>">* Enter Keyword as it currently appears<br></td></tr>
<tr><td> Name: </td><td><input type="text" name="name" id="name" value="<? echo $_REQUEST['name']; ?>">* Enter New Information<br></td></tr>
<tr><td> Suggested Retail:</td><td> <input type="text" name="retail" id="retail" value="<? echo $_REQUEST['retail']; ?>">* New Phone Number<br></td></tr>
<tr><td> Ounces: </td><td> <input type="text" name="ounces" id="ounces" value="<? echo $_REQUEST['ounces']; ?>">* Enter new block description here. <br></td></tr>
<tr><td> UPC: </td><td> <input type="text" name="upc" id="upc" value="<? echo $_REQUEST['upc']; ?>">* Enter new block description here. <br></td></tr>
<tr><td> </td><td align="left"> <input type="submit" name="submit" value="Submit Data"></td></tr>
</table>
</form>
</td></tr>
</table> <br />
<a href="index.php">Add Keyword</a> | <a href="../admin">Back to search form</a> |
<?php
echo '<pre>';
print($retail);
echo '</pre>';
?>
<a href="index.php?action=clear_login">logout</a>
</body>
这是它使用的更新 link,并将其传递给 update_ac.php
<?php
session_start(); // start session cookies
require("Login.class.php"); // pull in file
$login = new Login; // create object login
$login->authorize(); // make user login
?>
<style type="text/css">
body {background-color:#42520e; color: #f0cb01;
}
th {background: URL(http://www.athenahealth.com/_img/boxes/carousel_bg.png);}
p {color:blue;}
a:link {color: #f0cb01; text-decoration: underline; }
a:active {color: #f0cb01; text-decoration: underline; }
a:visited {color: #f0cb01; text-decoration: underline; }
a:hover {color: #f0cb01; text-decoration: none; }
</style>
<?php
$retail=$_REQUEST['retail'];
$id=$_REQUEST['id'];
$name=$_REQUEST['name'];
$upc=$_REQUEST['upc'];
$ounces=$_REQUEST['ounces'];
define("HOST", "localhost");
$retail=$_REQUEST['retail'];
$id=$_REQUEST['id'];
$name=$_REQUEST['name'];
$upc=$_REQUEST['upc'];
$ounces=$_REQUEST['ounces'];
// Database user
define("DBUSER", "root");
// Database password
define("PASS", "Password!");
// Database name
define("DB", "SnyderLanceSku");
############## Make the mysql connection ###########
$conn = mysql_connect(HOST, DBUSER, PASS) or die('Could not connect !<br />Please contact the site\'s administrator.');
$db = mysql_select_db(DB) or die('Could not connect to database !<br />Please contact the site\'s administrator.');
mysql_query("UPDATE products SET UPC='$upc', Name='$name', Item_Ounces='$ounces' WHERE UPC='$upc' ") or die (mysql_error());
?>
<table>
<tr><td valign="top"><br /><br />
<td>
<table> <tr><b>Data Updated Successfully</b></tr>
<tr><td> Keyword: </td><td><? echo $id; ?><br></td></tr>
<tr><td> Block?: </td><td><? echo $name; ?><br></td></tr>
<tr><td> Phone #:</td><td><?php echo $upc; ?><br> </td></tr>
<tr><td> Reason: </td><td><? echo $retail; ?></td></tr>
<tr><td> Reason: </td><td><? echo $ounces; ?></td></tr>
</table>
</form>
</td></tr>
</table>
<a href="./">Go Back</a>
我不太确定在哪里看这里...感谢任何帮助。
编辑:
这是两个脚本。它几乎可以正常工作。现在唯一的问题是它没有更新正确的行。它添加一个新行而不是更新 id 或者在这种情况下更新 UPC
您的这段代码有一些问题,从您提供的代码看来,您发送的似乎不是 POST
请求,而是发送 GET
请求您正在通过 URL 传递它们。所以首先,将 $_POST
更改为 $_GET
。
你的查询也是错误的。
$sql = "UPDATE `products` SET ".implode(", ", $update)."WHERE Product_sku = '$ID'";
应该是,
$sql = "UPDATE `products` SET ".implode(", ", $update)."WHERE Product_sku = '$id'";
我在你的代码中没有看到 $ID
变量,但我确实看到了 $id
变量。所以你也需要改变它。
编辑 1
此外,打开 error reporting
使调试更容易。
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(-1);
编辑 2
正如 Fred 所说,您在尝试从 HTML 获取数据到 PHP 时输入错误。
在您的 product 输入中,您将名称值设置为 Product
,就像您对 Name
输入所做的一样。然而,在您的 PHP 中,您却在 $name=$_GET['name'];
而它应该是 $name=$_GET['Name'];
。
您应该采用熟悉的命名约定,例如驼峰式命名,这将使这些难以发现的错误更难出现。我个人使用 PSR 编码约定。所以尝试采用一个并坚持下去。
另一件事,因为你之前从未发布过你的表单我建议你使用 $_GET
,但是对于某些事情(例如表单数据)你应该将它改回 $_POST
作为你的表单method="post"
.
编辑 3
您还应该养成检查变量是否实际包含值并正确设置的习惯,这称为验证。我会亲自检查是否已按下提交按钮(if (isset($_POST['yourSubmitButtonNameValue']))
然后验证该 if 语句中的其余字段。这样,您就知道您添加到数据库中的输入是有效的。