2010-02-14 32 views
0

我最近学习PHP和MySQL,也正在开发一个使用PHP和MySQL的在线Web窗体。在我有多个表格,我需要提交数据的形式。我试过这段代码;插入数据到多个表使用PHP通过网络形式

$required_fields = array('event_type','accommodation_type','public_user','comments','grand_total'); 
    $required_fields2 = array('first_name','last_name','gender','age_group'); 
    $errors = array_merge($errors, check_required_fields($required_fields, $_POST)); 
    $errors2 = array_merge($errors2, check_required_fields($required_fields2, $_POST)); 

    $fields_with_lengths = array('event_type' => 50, 'accommodation_type' => 50, 'public_user' => 50,'comments' => 10000,'grand_total' => 50); 
    $fields_with_lengths2 = array('first_name' => 50, 'last_name' => 50, 'gender' => 50,'age_group' => 50); 
    $errors = array_merge($errors, check_max_field_lengths($fields_with_lengths, $_POST)); 
    $errors2 = array_merge($errors2, check_max_field_lengths($fields_with_lengths2, $_POST)); 

    $event_type = trim(mysql_prep($_POST['event_type'])); 
    $accommodation_type= trim(mysql_prep($_POST['accommodation_type'])); 
    $public_user = trim(mysql_prep($_POST['public_user'])); 
    $comments = trim(mysql_prep($_POST['comments'])); 
    $grand_total = trim(mysql_prep($_POST['grand_total'])); 

    if (empty($errors)){ 
     $query = "INSERT INTO event_registration (event_type, accommodation_type, public_user, comments, grand_total) VALUES ('{$event_type}','{$accommodation_type}','{$public_user}','{$comments}','{$grand_total}')"; 
     $result = mysql_query($query, $connection); 

     if($result){ 
      $message = "The User was successfully registered"; 
     } else{ 
      $message = "The User could not be registered"; 
      $message .= "<br />" . mysql_error(); 
     } 
    } else{ 

     if(count($errors)==1){ 
      $message = "There was 1 error in the form."; 
     } else { 
      $message = "There were" . count($errors) . " error in the form."; 
     } 
    } 

} else { // Form has not been submitted 
    $event_type = ""; 
    $accommodation_type = ""; 
    $public_user = ""; 
    $comments = ""; 
    $grand_total = ""; 
} 
+1

请问您可以编辑您的问题,添加有关什么是不工作的信息?你有错误吗? – 2010-02-14 21:07:48

+0

是否有任何理由使括号围绕查询中的变量值? – malonso 2010-02-14 21:16:31

+1

@malonso>这被称为“复杂语法”,因为{大括号}可以解释字符串中的变量值和表达式。在PHP语言参考中查找“字符串”。在“引用字符串”中引用对象或数组索引值时,我经常自己使用此语法。 – bdl 2010-02-14 21:27:18

回答

2

在一般情况下,这里是你如何从一个表单POST数据到两个表:

<?php 
$dbhost="server_name"; 
$dbuser="database_user_name"; 
$dbpass="database_password"; 
$dbname="database_name"; 

$con=mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to the database:' . mysql_error()); 

$mysql_select_db($dbname, $con); 

$sql="INSERT INTO table1 (table1id, columnA, columnB) 
     VALUES (' ', '$_POST[columnA value]','$_POST[columnB value]')"; 

mysql_query($sql); 

$lastid=mysql_insert_id(); 

$sql2="INSERT INTO table2 (table1id, table2id, columnA, columnB) 
       VALUES ($lastid, ' ', '$_POST[columnA value]','$_POST[columnB value]')"; 

//table1id & table1id are auto-incrementing primary keys 

mysql_query($sql2); 

mysql_close($con); 

?> 

这个例子显示了如何从形式到倍数表插入数据,我还没有任何安全措施。