如何使用PHP将行添加到mySQL中


How do I add a row to mySQL using PHP?

我正试图在我的网站上添加一个"admin"部分。现在我正在编写一个部分,将新行添加到我的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();
?>

每当我输入任何数据(与表中已有的数据不重复)时,都会出现错误。如果我完全清除表中的所有数据,它将输入一次。我得到了一个重复的密钥错误,但我的密钥应该是"订单",这是唯一的,每次我输入它。

建议?

如果实际插入新行,则不应该自己填写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_*函数,它们已被弃用。

我猜表的"id"字段是主键。如果是这种情况,就不能有两个具有相同标识符的行。

根据您的变量名newstatus,在我看来,您似乎正在尝试更新订单的状态;是这样吗?如果是,您应该使用形式为的UPDATE SQL查询

UPDATE table SET status='somestatus' WHERE id=someid