如何为两个或多个单独的MySQL表执行PHP插入

时间:2012-09-13 20:05:01

标签: php mysql

HTML:

<html> 
<?php include 'C:\xampp\htdocs\paxdb\head.php';  
include 'config/menu.php';?>  
<div id="dataentry"> 

<!--This section is the demographic text field area--> 
<form method="post" action="dataentered.php"> 
First Name:&nbsp;<input type="text" name="First_Name"/></br> 
</br> 
Last Name:&nbsp;<input type="text" name="Last_Name"/></br> 
</br> 
E-mail:&nbsp;<input type="text" name="email"/></br> 
</br> 

<!--This section is the age range checkbox selection area--> 
<p><u><b>Age Range</b></u></p> 
<input type="checkbox" name="age[]" id="20-25" value="20-25"/>&nbsp;20-25</br> 
<input type="checkbox" name="age[]" id="26-30" value="26-30"/>&nbsp;26-30</br> 
<input type="checkbox" name="age[]" id="31-35" value="31-35"/>&nbsp;31-35</br> 
</div> 
<div id="checkboxes"> 
</div> 

<!--This section is the trips take checkbox area--> 
<div id="tripstodatetype"> 
<p><u><b>WHAT TYPE OF TRIPS TO DATE HAVE YOU TAKEN?</b></u></p> 
<input type="checkbox" name="trip2date[]" id="Bus" value="Bus">&nbsp;Bus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</br> 
<input type="checkbox" name="trip2date[]" id="Car" value="Car">&nbsp;Car</br> 
<input type="checkbox" name="trip2date[]" id="Weekend fly-in" value="Weekend fly-in">&nbsp;Weekend fly-in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</br> 
</div> 
<div id="tripstodateborder"> 
</div> 

<!--This section is the type of trip client likes best checkbox area--> 
    <div id="triplikebest"> 
<p><u><b>WHAT TYPE OF TRIP DO YOU LIKE BEST?</b></u></p> 
<input type="checkbox" name="triplikebest[]" value="Bus">&nbsp;Bus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</br> 
<input type="checkbox" name="triplikebest[]" value="Car">&nbsp;Car</br> 
<input type="checkbox" name="triplikebest[]" value="Weekend fly-in">&nbsp;Weekend fly-in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</br> 
</div> 
<div id="triplikeborder"> 
</div> 

和PHP:

<html>
<?php
include 'head.php';
include 'config/menu.php'; 
$host="localhost";
$username="somename";
$password="somepass";
$dbname="pax";

$dbc = mysql_connect($host, $username, $password, $dbname); 
if (!$dbc) 
{ 
    die('Error connecting to MySQL server' . mysql_error()); 
    } 
mysql_select_db($dbname, $dbc); 

$first_name = mysql_real_escape_string($_POST['First_Name']);  
$last_name = mysql_real_escape_string($_POST['Last_Name']); 
$email = mysql_real_escape_string($_POST['email']); 
$age = $_POST['age']; 
$my_range = ""; 
foreach($age as $range) { 
   $my_range = $my_range . mysql_real_escape_string($range) . ", "; 
} 
$trip2date = $_POST['trip2date'];
$my_triprange = ""; 
foreach($trip2date as $triprange) { 
   $my_triprange = $my_triprange . mysql_real_escape_string($triprange) . ", "; 
} 
mysql_query("INSERT INTO `pax` (`First_Name`, `Last_Name`, `email`, `age`,`trip2date`)    
     VALUES('$first_name','$last_name','$email', '$my_range','$my_triprange')")  
     or die(mysql_error());  
mysql_close($dbc); 
?> 
<div class = "entered">
 <p>Success! Your Data Has Been Submitted.  Please click on <b>'DATA ENTRY'</b> above to enter another. </P>
 </div>
    <?php include 'footer.php';?>
    </div>  
    </div>
    </body>
</html>

如果我将triprange数据放入一个单独的表中,我将如何转换INSERT查询以执行插入到新表中? (假设新/第二个表被称为“旅行”)。 - 或者 - 在这里使用第二个INSERT查询更有意义吗?如果是这样,它应该如何保持连接到第一个表/ ID

提前谢谢。

2 个答案:

答案 0 :(得分:0)

查看您的代码,您是否尝试将相同的数据两次输入到不同的表中?

如果不是,你应该将你的查询变成一个变量,所以该行会读到这样的东西......

$query1 = mysql_query("INSERT INTO `pax` (`First_Name`, `Last_Name`, `email`, `age`,`trip2date`)    
     VALUES('$first_name','$last_name','$email', '$my_range','$my_triprange')")  
     or die(mysql_error());

您可以考虑重复另一个表的insert语句,但使用原始代码中声明的相同变量。

如果我走错了路线,你能解释一下吗?

答案 1 :(得分:0)

mysqli_multi_query();

请阅读此处的手册:http://php.net/manual/en/mysqli.multi-query.php

编辑:

<?php

  /* connection conf */
  // use p: if you want to have a persistent connection 
  // this will improve the speed and resource usage of opening a connection
  $host     = "p:localhost";
  $username = "somename";
  $password = "somepass";
  $dbname   = "pax";

  /* make connection */
  $lnk = mysqli_connect($host, $username, $password, $dbname);

  /* check connection */
  if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  /* prepare variables */
  $first_name = mysqli_real_escape_string($_POST['First_Name']);  
  $last_name  = mysqli_real_escape_string($_POST['Last_Name']); 
  $email      = mysqli_real_escape_string($_POST['email']); 
  $age        = $_POST['age']; 

  $my_range = ""; 
  foreach($age as $range) { 
    $my_range = $my_range . mysqli_real_escape_string($range) . ", "; 
  }

  $trip2date = $_POST['trip2date'];
  $my_triprange = ""; 
  foreach($trip2date as $triprange) { 
     $my_triprange = $my_triprange . mysqli_real_escape_string($triprange) . ", "; 
  }

  /* execute query */
  mysqli_query($lnk, "INSERT INTO `pax` (`First_Name`, `Last_Name`, `email`, `age`,`trip2date`) " .
                     "VALUES('$first_name','$last_name','$email', '$my_range','$my_triprange');"
               );  

  /* execute multi query INSERT */
  mysqli_multi_query($lnk, "INSERT INTO `pax` (`First_Name`, `Last_Name`, `email`, `age`,`trip2date`) " .
                           "VALUES('$first_name','$last_name','$email', '$my_range','$my_triprange');"
                           "COMMIT;"
                     );  

  /* execute multi query SELECT */
  $query  = "SELECT CURRENT_USER();";
  $query .= "SELECT `email` FROM `pax` ORDER BY `id` LIMIT 5";

  if (mysqli_multi_query($lnk, $query)) {
    do {
      /* store first result set */
      if ($result = mysqli_store_result($lnk)) {
        while ($row = mysqli_fetch_row($result)) {
          printf("%s\n", $row[0]);
        }
        mysqli_free_result($result);
      }
      /* print divider */
      if (mysqli_more_results($lnk))
       printf("-----------------\n");

    } while (mysqli_next_result($lnk));
  }  

  /* close conenction */
  mysqli_close($dbc); 

  // I used your code and some samples from the PHP manual.
  // Hope this piece of code helps you and others to understand mysqli better.
  // Thanks to PHP for having the best manual.

?>