我需要同时将动态文本框中的值保存在不同的表中。有人可以帮我这么做吗?我有4个表需要填写。这是我的表格及其字段:
表1
- desk_id
- desk_user
- desk_report
- desk_action
表2
- print_id
- print_brand
- print_model
- print_report
- print_action
表3
- tel_id
- tel_local
- tel_user
- tel_report
- tel_action
表4
- remarks_id
- remarks
我的PHP代码:
<?php
$con = mysql_connect ("localhost","root","nasi") or die
('cannot connect to database error: '.mysql_error());
if (isset($_POST['desk_user']) &&
isset($_POST['desk_report']) &&
isset($_POST['desk_action']) &&
isset($_POST['print_brand']) &&
isset($_POST['print_model']) &&
isset($_POST['print_report']) &&
isset($_POST['print_action']) &&
isset($_POST['tel_local']) &&
isset($_POST['tel_user']) &&
isset($_POST['tel_report']) &&
isset($_POST['tel_action']) &&
isset($_POST['remarks']))
{
$desk_user = $_POST['desk_user'];
$desk_report = $_POST['desk_report'];
$desk_action = $_POST['desk_action'];
$print_brand = $_POST['print_brand'];
$print_model = $_POST['print_model'];
$print_report = $_POST['print_report'];
$print_action = $_POST['print_action'];
$tel_local = $_POST['tel_local'];
$tel_user = $_POST['tel_user'];
$tel_report = $_POST['tel_report'];
$tel_action = $_POST['tel_action'];
$remarks = $_POST['remarks'];
if (!empty($desk_user)&& !empty($desk_report)&& !empty($desk_action) && !empty($print_brand) && !empty($print_model) && !empty($print_report) && !empty($print_action) && !empty($tel_local) && !empty($tel_user) && !empty($tel_report) && !empty($tel_action) && !empty($remarks)) {
mysql_select_db("csr", $con);
$queries = array();
for($i=0; $i<count($desk_user || $print_brand || $tel_local || $remarks); $i++)
{
$queries [] = "('" .$desk_user [$i ] . "', '" .$desk_report [$i ] . "', '" .$desk_action [$i ] . "')" ;
$queries1 [] = "( '" .$print_brand [$i ] . "', '" .$print_model [$i ] . "', '" .$print_report [$i ] . "', '" .$print_action [$i ] . "')" ;
$queries2 [] = "('" .$tel_local [$i ] . "', '" .$tel_user [$i ] . "', '" .$tel_report [$i ] . "', '" .$tel_action [$i ] . "')" ;
$queries3 [] = "('" .$remarks [$i ] . "')" ;
}
if(count($queries) == 0)
{
# Nothing passed
# exit
}
$query = "insert into desktoplaptop (desk_user, desk_report, desk_action tel_local) values " . implode(", ", $queries) ;
$query1 = "insert into printer (print_brand, print_model, print_report, print_action) values " . implode(", ", $queries1) ;
$query2 = "insert into tel (tel_user, tel_report, tel_action) values " . implode(", ", $queries2) ;
$query3 = "insert into remarks (remarks) values " . implode(", ", $queries3) ;
if ($sql_run = mysql_query($query) || $sql_run = mysql_query($query1) || $sql_run = mysql_query($query2) || $sql_run = mysql_query($query3)) {
echo 'ok.';
}
else {
echo '*Sorry, we couldn\'t register you at this time. Try again later.';
}
}
}
?>
答案 0 :(得分:1)
如果有四个表,则每个表都需要一个唯一的INSERT语句。使用您提供的代码,您只需命名一个表: desktoplaptop
如果上面列表中建议实际存在四个唯一表,则需要编写一个唯一的INSERT语句,该语句引用每个表的模式。
例如:
$queries = array();
if(!empty($desk_user)) {
$queries[] = "INSERT into desktop (desk_user, desk_report, desk_action) VALUES ('" . $desk_user . "', '" .$desk_report . "', '" . $desk_action . "')'";
}
重复其他3个表格
foreach($queries as $query) {
if ($sql_run = mysql_query($query)) {
echo 'ok.';
} else {
echo '*Sorry, we couldn\'t register you at this time. Try again later.';
}
}
请注意,如果您从Web表单中获取输入,您还需要mysql_escape_string()每个$ _POST变量以防止注入。此外,您似乎错误地使用了count()函数 - 当它需要一个数组时,它会传递一个布尔表达式。总的来说,我建议您仔细查看代码的运作方式。
答案 1 :(得分:0)
将四个INSERT
作为循环吗?
$query[0] = "INSERT INTO TABLE1 (...) VALUES (...)";
$query[1] = "INSERT INTO TABLE2 (...) VALUES (...)";
//etc...
foreach ($query as $x)
{
if ($sql_run = mysql_query($x)) {
echo 'ok.';
} else {
echo '*Sorry, we couldn\'t register you at this time. Try again later.';
}
}