php:插入和更新表
我希望将表单中的数据插入两个表(采购和库存),如果有相同的项目,我希望它插入采购表(记录采购)并更新到库存表(而不是采购表,这样它可以添加采购项目的数量,并且库存表上没有重复的项目)。问题是我不理解这种操作的代码逻辑 表单页代码段:php:插入和更新表,php,mysql,Php,Mysql,我希望将表单中的数据插入两个表(采购和库存),如果有相同的项目,我希望它插入采购表(记录采购)并更新到库存表(而不是采购表,这样它可以添加采购项目的数量,并且库存表上没有重复的项目)。问题是我不理解这种操作的代码逻辑 表单页代码段: <form name="purchaseform" method="post" onsubmit="return validateForm()" action="submitpurchaseadmin.php"> <table> <tr
<form name="purchaseform" method="post" onsubmit="return validateForm()" action="submitpurchaseadmin.php">
<table>
<tr>
<td>Type</td>
<td>
<select name="type">
<option value="opt1">Option1</option>
<option value="opt2">Option2</option>
</select>
</td>
</tr>
<tr>
<td>Quantity</td>
<td><input type="text" name="qty"></td>
</tr>
<tr>
<td>Date</td>
<td><input type="text" name="date" value="<?php echo date("d-m-Y"); ?>"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="submit" value="Save"></td>
</tr>
</table>
</form>
<?php
include("connect.php");
$host="localhost";
$user="root";
$pass="";
$db_name="proyek";
$tbl_name="purchase";
mysql_connect("$host", "$user", "$pass")or die("Cannot connect to SQL.");
mysql_select_db('$db_name');
$type=$_POST['type'];
$qty=$_POST['qty'];
$date=$_POST['date'];
$query=("SELECT * FROM stock");
$result=mysql_query($query);
$row=mysql_num_rows($result);
if ($row==0)
{
mysql_query("INSERT into stock (item, qty) VALUES ('$type', '$qty')");
mysql_query("INSERT into purchase (type, qty, date) VALUES ('$type', '$qty', '$date')");
}
else
{
mysql_query("INSERT into purchase (type, qty, date) VALUES ('$type', '$qty', '$date')");
mysql_query("UPDATE stock SET qty=qty+'$qty' WHERE item='$type'");
}
header("location:purchasehistory.php");
?>
插入相同项目时,库存中仍有重复项您当前的查询将选择所有行,而不管项目是否相等。您需要修改您的查询,以便它检查项目等于
$type
的行:
更改此项:
$query=mysql_query("SELECT * FROM stock");
致:
您更正的代码块:-
<?php
include("connect.php");
$host = "localhost";
$user = "root";
$pass = "";
$db_name = "proyek";
$tbl_name = "purchase";
mysql_connect($host, $user, $pass) or die("Cannot connect to SQL.");
mysql_select_db($db_name);
$type = (isset($_POST['type'])) ? $_POST['type'] : '';
$qty = (isset($_POST['qty'])) ? $_POST['qty'] : '';
$date = (isset($_POST['date'])) ? $_POST['date'] : '';
$query = "SELECT * FROM stock";
$result = mysql_query($query);
$row = mysql_num_rows($result);
if ($row == 0) {
mysql_query("INSERT into stock (item, qty) VALUES ('$type', '$qty')");
mysql_query("INSERT into purchase (type, qty, date) VALUES ('$type', '$qty', '$date')");
} else {
mysql_query("INSERT into purchase (type, qty, date) VALUES ('$type', '$qty', '$date')");
mysql_query("UPDATE stock SET qty=qty+'$qty' WHERE item='$type'");
}
header("location:purchasehistory.php");
更正1:-
mysql_select_db('$db_name'); // here db_name treating as a string
应为:-
mysql_select_db($db_name);
更正2:-
$query=("SELECT * FROM stock");
$result=mysql_query($query);
应为:-
$query= "SELECT * FROM stock";
$result=mysql_query($query); // or you can directly write query here
完整的代码块:-
<?php
include("connect.php");
$host = "localhost";
$user = "root";
$pass = "";
$db_name = "proyek";
$tbl_name = "purchase";
mysql_connect($host, $user, $pass) or die("Cannot connect to SQL.");
mysql_select_db($db_name);
$type = (isset($_POST['type'])) ? $_POST['type'] : '';
$qty = (isset($_POST['qty'])) ? $_POST['qty'] : '';
$date = (isset($_POST['date'])) ? $_POST['date'] : '';
$query = "SELECT * FROM stock";
$result = mysql_query($query);
$row = mysql_num_rows($result);
if ($row == 0) {
mysql_query("INSERT into stock (item, qty) VALUES ('$type', '$qty')");
mysql_query("INSERT into purchase (type, qty, date) VALUES ('$type', '$qty', '$date')");
} else {
mysql_query("INSERT into purchase (type, qty, date) VALUES ('$type', '$qty', '$date')");
mysql_query("UPDATE stock SET qty=qty+'$qty' WHERE item='$type'");
}
header("location:purchasehistory.php");
请添加最低安全性并使用函数mysql\u real\u escape\u string
首先插入数据购买并从中获取mysql\u insert\u id()。使用该id在库存表中创建条目。下一次检查采购项目是否已经有库存,然后只更新数量字段。我有点迷路了,你能给我一个代码示例吗?我明白了,所以如果表上有相同的项目,它会更新,而不是插入另一行?我已将查询更改为按类型选择,如果($row[1]=$type)库存表中仍然存在重复使用=
符号,即如果($row[1]==$type)
在一个表中使用==时仍然存在重复。有什么建议吗?是的,我已经检查了库存表中有2个条目,而采购表中只有1个条目。这并不能解决我的问题,不是吗?@rendystiadi:第一个变化是,因为你错误地使用了单引号。
<?php
include("connect.php");
$host = "localhost";
$user = "root";
$pass = "";
$db_name = "proyek";
$tbl_name = "purchase";
mysql_connect($host, $user, $pass) or die("Cannot connect to SQL.");
mysql_select_db($db_name);
$type = (isset($_POST['type'])) ? $_POST['type'] : '';
$qty = (isset($_POST['qty'])) ? $_POST['qty'] : '';
$date = (isset($_POST['date'])) ? $_POST['date'] : '';
$query = "SELECT * FROM stock";
$result = mysql_query($query);
$row = mysql_num_rows($result);
if ($row == 0) {
mysql_query("INSERT into stock (item, qty) VALUES ('$type', '$qty')");
mysql_query("INSERT into purchase (type, qty, date) VALUES ('$type', '$qty', '$date')");
} else {
mysql_query("INSERT into purchase (type, qty, date) VALUES ('$type', '$qty', '$date')");
mysql_query("UPDATE stock SET qty=qty+'$qty' WHERE item='$type'");
}
header("location:purchasehistory.php");