Php Post到Mysql中的两个表

时间:2013-04-12 05:23:33

标签: php mysql

我正在尝试同时发布到两个表。我正在尝试让DonorID显示在$description下的另一个表格中。我只能在$description中编写任何文本,但我需要它是动态的而不是静态的,这就是文本的内容。我有两张桌子;第一个是accounting,第二个是donations。我正试图改变$description='Donation from Donor';并让捐赠者将交易列在捐助者所在的位置。任何建议将不胜感激。

这是我的代码:

<?php

  $dbserver = "localhost";
  $dblogin = "root";
  $dbpassword = "";
  $dbname = "";

  $date=$_POST['date'];
  $firstname=$_POST['firstname'];
  $lastname=$_POST['lastname'];
  $middleinitial=$_POST['middleinitial'];
  $organization=$_POST['organization'];
  $donorid=$_POST['donorid'];
  $paymenttype=$_POST['paymenttype'];
  $nonmon=$_POST['nonmon'];
  $event=$_POST['event'];
  $Income=$_POST['Income'];
  $account='Revenue';
  $description='Donation from Donor';
  $transactiontype='Income';
  $Expense='0.00';

  $con = mysql_connect("$dbserver","$dblogin","$dbpassword");
    if (!$con)
  {
  die('Could not connect to the mySQL server please contact technical support 
           with the following information: ' . mysql_error());
  }

  mysql_select_db("$dbname", $con);


  $sql = "INSERT INTO donations (date, firstname, middleinitial, lastname, 
            organization, donorid, paymenttype, nonmon, Income, event)  

  Values        
            ('$date','$firstname','$middleinitial','$lastname','$organization',  
             '$donorid','$paymenttype','$nonmon','$Income','$event')";


  $sql2 = "INSERT INTO accounting (date, transactiontype, account, 
              description, Income, Expense)

  VALUES ('$date','$transactiontype','$account','$description','$Income','$Expense')";

  mysql_query($sql2);


    if (!mysql_query($sql,$con))
  {

    die('Error: ' . mysql_error());

  }
  echo "1 record added";

  mysql_close($con);

  header( 'Location: http://localhost/donations.php' ) ;
  ?>

5 个答案:

答案 0 :(得分:2)

正如我所说,我会亲自将mysqli用于新项目,这里有一个代码示例:mysqli:

       $dbserver = "localhost";
       $dblogin = "root";
       $dbpassword = "";
       $dbname = "";

       $date=$_POST['date'];
       $firstname=$_POST['firstname'];
       $lastname=$_POST['lastname'];
       $middleinitial=$_POST['middleinitial'];
       $organization=$_POST['organization'];
       $donorid=$_POST['donorid'];
       $paymenttype=$_POST['paymenttype'];
       $nonmon=$_POST['nonmon'];
       $event=$_POST['event'];
        $Income=$_POST['Income'];
       $account='Revenue';
       $description='Donation from Donor';
       $transactiontype='Income';
       $Expense='0.00';

        //opening connection
        $mysqli = new mysqli($dbserver, $dblogin, $dbpassword, $dbname);
        if (mysqli_connect_errno()) 
        {
            printf("Connection failed: %s\n", mysqli_connect_error());
            exit();
        }

        $sql = "INSERT INTO `donations` (`date`, `firstname`, `middleinitial`, `lastname`, `organization`, `donorid`, `paymenttype`, `nonmon`, `Income`, `event`) Values  ('$date','$firstname','$middleinitial','$lastname','$organization', '$donorid','$paymenttype','$nonmon','$Income','$event')";

        $sql2 = "INSERT INTO `accounting` (`date`, `transactiontype`, `account`, `description`, `Income`, `Expense`) VALUES ('$date','$transactiontype','$account','$description','$Income','$Expense')";

        $query1 = $mysqli->query($sql) or die($mysqli->error.__LINE__);
        $query2 = $mysqli->query($sql2) or die($mysqli->error.__LINE__);

        //closing connection
        mysqli_close($mysqli);

        header( 'Location: http://localhost/donations.php' ) ;

UPDATE 你可以添加donid,只需在查询中放置两个变量,如:

        $sql2 = "INSERT INTO `accounting` (`date`, `transactiontype`, `account`, `description`, `Income`, `Expense`) VALUES ('".$date."','".$transactiontype."','".$account."','".$donorid . " " . $description."','".$Income."','".$Expense."')";

这样我只需用空格分隔donoriddescription,但您可以用纯文本添加任何内容:

'".$donorid . " - " . $description."'

答案 1 :(得分:0)

在此之后

$sql = "INSERT INTO donations (date, firstname, middleinitial, lastname, 
        organization, donorid, paymenttype, nonmon, Income, event)  

        Values        
        ('$date','$firstname','$middleinitial','$lastname','$organization',  
         '$donorid','$paymenttype','$nonmon','$Income','$event')";

mysql_query($sql);

请执行查询。

答案 2 :(得分:0)

我看到的是......

首先,您只是执行$sql2而不是其他$sql语句

另一个是在插入时声明了一些列名为mysql保留字(date列)

你应该为他们做“反叛......”

请参阅此链接MYSQL RESEERVED WORDS

附加说明:您的查询也容易受到SQL注入

SQL INJECTION

How to prevent SQL injection in PHP?

答案 3 :(得分:0)

您必须将$ sql2拆分为2

第一名: -

 $sql2 = "INSERT INTO accounting (description) SELECT * FROM donations WHERE donorid='$donorid'"

然后另一个

"UPDATE accounting SET date='', transactiontype='', account ='', Income='', Expense ='' WHERE description=(SELECT * FROM donations WHERE donorid='$donorid')"

将从捐赠中获取给定捐赠者的所有信息,并将其列在会计

中的描述中

答案 4 :(得分:0)

只需在第一个表上的insert on insert之后写入,就可以将数据插入到另一个表中。