我正在尝试添加网站的“管理员”部分。现在我正在研究一个部分,为我的MySQL数据库添加一个新行。
第一个文件是我的admin.php:
<html>
...
<body>
<form action="add.php" method="post">
<input type="text" name="order" />
<input type="text" name="newstatus" />
<input type="submit" value="Add" />
</form>
</body>
</html>
我的目标是在新行中添加2个数据(表格现在只有2列)。
然后,我有我的add.php文件:
<?
//declare my connection variables - I'll move these to a secure method later
mysql_connect($servername, $username, $password) or die (mysql_error ());
// Select database
mysql_select_db($dbname) or die(mysql_error());
// The SQL statement is built
$sql="INSERT INTO $tblname(id, status)VALUES('$order', '$newstatus')";
$result=mysql_query($sql);
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='admin.php'>Back to main page</a>";
}
else {
echo mysqli_errno($this->db_link);
}
?>
<?php
// close connection
mysql_close();
?>
任何时候我输入任何数据(表中已有的数据都不重复),它会给我一个错误。如果我完全清除所有数据的表格,它将输入一次。我收到重复的密钥错误,但我的密钥应该是“订单”,每次输入时都是唯一的。
建议?
答案 0 :(得分:2)
如果您实际插入新行,则不应自行填写ID,而应将其设置为数据库中的AUTO_INCREMENT
。然后,你有这样的形式:
<form action="add.php" method="post">
<input type="text" name="newstatus" />
<input type="submit" value="Add" />
</form>
您的PHP代码如下:
$newstatus = mysql_real_escape_string($_POST['newstatus']); // note the usage of $_POST variable
$sql="INSERT INTO `$tbl_name` (`status`) VALUES ('$newstatus')";
$result = mysql_query($sql) or die('Failed executing query: '.mysql_error());
可以使用以下查询在AUTO_INCREMENT
中设置 phpMyAdmin
:
ALTER TABLE `WorkOrders` MODIFY `id` INTEGER NOT NULL AUTO_INCREMENT;
最后,请勿使用mysql_*
个函数,they are deprecated。
答案 1 :(得分:0)
我猜你的表的'id'字段是主键。如果是这种情况,则不能有两行具有相同的标识符。
通过您的变量名称 newstatus ,在我看来,您似乎正在尝试更新订单的状态;是这样的吗?如果是,则应使用以下格式的UPDATE SQL查询:
UPDATE table SET status='somestatus' WHERE id=someid