需要帮助更新表格
我有一些数据来自我在数据库中插入的表单。我有5张桌子
我能够将数据放入“产品”,“过滤器”和“产品”中。 “加热器”表但我不知道如何将数据放入“product_filter”& “product_heater”表。任何教程的任何帮助或指导都表示赞赏。
我的桌子结构:
产品
过滤
product_filter
加热器
product_heater
我想要
以下是代码:
PHP Syntax (Toggle Plain Text)
// Product data Update
$name = mysql_real_escape_string($_POST['product']);
$cost = mysql_real_escape_string($_POST['cost']);
$details = mysql_real_escape_string($_POST['details']);
$sql_title = "INSERT INTO product (
id ,
product ,
cost ,
details ,
)
VALUES (
NULL , '$name' , '$cost' , '$details')";
if (!mysql_query($sql_title,$con))
{
die('Error: ' . mysql_error());
}
echo "records for product added<br />";
// Filter update
// This is the array which is coming from the form
/*
filtername
Array ( [0] => ehiem
[1] => Hagan
[2] => Rena
[3] => jobo )
filterimg
Array ( [0] => img1.jpg
[1] => img2.jpg
[2] => img3.jpg
[3] => img4.jpg )
*/
$filtername = mysql_real_escape_string($filtername);
$filterimgpath = mysql_real_escape_string($filterimg);
$combined_array = array_combine($filtername, $filterimgpath);
$values = array();
foreach ($combined_array as $filtername => $filterimgpath)
{
$values[] = "('$filtername', '$filterimgpath')";
}
$sql = "INSERT INTO filter (filter , imgpath) VALUES " . implode(', ', $values);
//echo $lastid = mysql_insert_id()."<br />";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "records added<br />";
//Product Filter Update table
// This is where Im stuck. Not able to even think of anything....
// heater update
// This is the array which is coming from the form
/*
heatername
Array ( [0] => ehiem
[1] => Dolphin
[2] => Rena
[3] => jobo )
heaterimg
Array ( [0] => img1.jpg
[1] => img2.jpg
[2] => img3.jpg
[3] => img4.jpg )
*/
$heatername = mysql_real_escape_string($heatername);
$heaterimgpath = mysql_real_escape_string($heaterimg);
$combined_array = array_combine($heatername, $heaterimgpath);
$values = array();
foreach ($combined_array as $heatername => $heaterimgpath)
{
$values[] = "('$heatername', '$heaterimgpath')";
}
$sql = "INSERT INTO heater (heater , imgpath) VALUES " . implode(', ', $values);
//echo $lastid = mysql_insert_id()."<br />";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "records added<br />";
//Product heater Update table
// This is where Im stuck. Not able to even think of anything....
我的问题是:如何更新product_filter&amp; product_heater表?
答案 0 :(得分:1)
您正在将数据插入产品表中 您需要获取刚刚插入的产品的auto_increment_id 如果插入多个项目,这会变得棘手。
但是,您只有一个产品条目,因此很简单:
插入产品后添加以下内容:
echo "records for product added<br />";
$get_product_id = "SELECT LAST_INSERT_ID() as product_id";
$result = mysql_query($get_product_id);
$row = mysql_fetch_array($result);
$product_id = $row['product_id'];
echo "product_id is: ".$product_id;
获取加热器值的一种方法是在加热器表上添加一个触发器:
DELIMITER $$
CREATE TRIGGER ai_heater_each AFTER INSERT ON heater FOR EACH ROW
BEGIN
INSERT INTO heater_inserts (heater_id, conn_id) VALUES (new.id, CONNECTION_ID());
END $$
DELIMITER ;
这会将所有加热器ID存储到临时表中,以及当前连接的ID 这可以确保您不会遇到使用其他客户端插入的并发问题。
您可以像这样插入product_heater
表:
INSERT INTO product_heater (id_product, id_heater)
SELECT $product_id, hi.heater_id FROM heater_inserts hi
WHERE hi.conn_id = CONNECTION_ID();
在您完成后,不要忘记清理heater_inserts表。
DELETE FROM heater_inserts WHERE conn_id = CONNECTION_ID();
您可以使用不需要清理且不需要connection_id的临时表,因为它们在每个会话中都是唯一的,但在这种情况下,您需要在开始时创建表会议。
另请注意,如果连接断开,临时表会被破坏,因此您需要添加一些样板代码来处理它。
创建表时可以使用TEMPORARY关键字。 TEMPORARY表仅对当前连接可见,并在关闭连接时自动删除。这意味着两个不同的连接可以使用相同的临时表名,而不会相互冲突或与现有的同名非TEMPORARY表冲突。 (在删除临时表之前,现有表是隐藏的。)要创建临时表,您必须具有CREATE TEMPORARY TABLES权限。