组合两个或多个插入和ifset

时间:2016-05-24 20:06:44

标签: php mysql

我想知道是否有可能将两个或更多插入 if isset 语句同时插入到同一网页上的同一个表中在一个查询中时间甚至更好。

我有一个大学项目,要求同时将2/3组信息插入到单个db tbl中。我试图分别从3个查询中选择2个,但我收到了 "重复条目''关键字'"" ,这是有道理的,因为我的数据库中的名称列是唯一的。

2/3组信息与其他信息不同,1组是输入信息,例如姓名,地址等。另外两组基于复选框和单选按钮输入,例如,如果选中复选框,则插入1进入DB,如果未选中则插入2。

假设最佳做法是将查询合并到一个查询中,我不知道该怎么做。特别是因为它们是两种不同的输入类型。很新!所以任何帮助将不胜感激。干杯!

插入复制 - (文本数据)

  $adm_Franchise = mysqli_real_escape_string($dbc, $_GET['Franchise']);


    if (isset($_POST['Save-details'])) {
        $id = mysqli_real_escape_string($dbc, $_POST['ID']);
        $name = mysqli_real_escape_string($dbc, $_POST['name']);
        $lname = mysqli_real_escape_string($dbc, $_POST['lname']);


    $insert = "INSERT INTO Details
  ( ID , name , lname ) 
  VALUES ( ? , ?,?) 
  ON DUPLICATE KEY 
  UPDATE ID = ?
  , name               = ?
  , lname       = ?";


        $ce = mysqli_prepare($dbc, $insert);

       //$ce = mysqli_prepare($dbc, $insert) or die(mysqli_error($dbc));

        mysqli_stmt_bind_param($ce, 'ississ', $id, $name, $lname,$id, $name, $lname );

        /* execute query */
        $execute = mysqli_stmt_execute($ce);

        if ($execute) {
            echo "<script> alert('Saved')</script>";
        }
    } else {
        echo mysqli_error($dbc);
    }

$ _ POST变量HTML

根据要求:

<form id="myform " class="Form" method="POST" action="Main_Franchise_Details.php?Franchise=<?php echo $_GET['Franchise']; ?>" accept-charset="utf-8">

   <div class="group1">
       <div class="field">
               <fieldset>

                    <input type="text" id="name" name="name" value="" placement="Customer Name" required>
                </div><br>

                <input type="text" id="lname" name="lname" value="" placement="Customer Last Name" required>

       </fieldset>

复选框查询

<input type="checkbox" name="saleItem" value="1" <?php echo (isset($_GET['saleItem']) ? 'checked="checked"' : '')?> />

 $is_checked = (isset($_GET['saleItem']) ? '1' : '2');

 $sql=mysqli_query($dbc,"INSERT INTO Details (active) VALUES ('" . $is_checked . "')"); 

 if (!$sql) {
    die('Invalid query: ' . mysql_error($dbc));
   }
   mysqli_close($dbc); 

DB

CREATE TABLE `Details` (
`ID` bigint(255) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`lname` varchar(200) NOT NULL,
`active` text,
 PRIMARY KEY (`ID`),
 UNIQUE KEY `name` (`Rname`),
 UNIQUE KEY `ID` (`ID`),
 ) ENGINE=InnoDB AUTO_INCREMENT=210 DEFAULT CHARSET=outfit

1 个答案:

答案 0 :(得分:0)

鉴于我对你的问题的理解有限,这就是我的建议。首先,您有一个页面,其中包含所有控件的表单。

<form id="myform " class="Form" method="POST" action="Main_Franchise_Details.php?Franchise=<?php echo $_GET['Franchise']; ?>" accept-charset="utf-8">
    <input type="text" id="name" name="name" value="" placement="Customer Name" required><br>
    <input type="text" id="lname" name="lname" value="" placement="Customer Last Name" required>
    <input type="text" id="lname" name="lname" value="" placement="Customer Last Name" required>
    <input type="checkbox" id="status" name="status" value="2">
    <input type="checkbox" id="otherStatus" name="otherStatus" value="1">
</form>

以上是一个非常简单的例子。但是,当你提交上述表格时,你会在$ _POST变量中收到你的数据,所以你可以一步一步地插入它:

$id = mysqli_real_escape_string($dbc, $_POST['ID']);
$name = mysqli_real_escape_string($dbc, $_POST['name']);
$lname = mysqli_real_escape_string($dbc, $_POST['lname']);

//first checkbox isn't set so this means we have to insert 1 into the database otherwise 
//we just insert the value
if(!isset($_POST['status']))
    $status = 1;
else
    $status = $_POST['status'];

//second checkbox isn't set so in this case we have to insert 2 into the database otherwise
//we just insert its value
if(!isset($_POST['otherStatus']))
    $otherStatus = 2;
else
    $otherStatus = $_POST['otherStatus'];

//So now we're ready so we insert into one single query

$insert = "INSERT INTO Detail (ID, lname, fname, status, otherStatus) values (?,?,?,?,?)";
$ce = mysqli_prepare($dbc, $insert);

mysqli_stmt_bind_param($ce, 'ississ', $id, $name, $lname, $status, $otherStatus);

$execute = mysqli_stmt_execute($ce);

if ($execute) 
{
    echo "saved";
}

如果您有任何疑问,请随时提出。我会相应更新。