0

我正在尝试同时发布到两个表。我正在尝试将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' ) ;
  ?>
4

5 回答 5

2

As i said i would personaly use mysqli for new project, here a sample of you code with 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 you can add donorid simply placing both vars in the query like:

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

this way i just separate donorid and description with a space but you can add anything you want to in plain text:

'".$donorid . " - " . $description."'
于 2013-04-12T05:31:00.030 回答
0

Just write after insert on trigger on first table to insert data into another table.

于 2013-04-12T05:44:09.047 回答
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')"

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

于 2013-04-12T05:42:14.830 回答
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);

请执行查询。

于 2013-04-12T05:25:49.187 回答
0

我看到的是..

首先你只是执行你的$sql2而不是其他的$sql语句

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

你应该有 `` 他们的反引号..

参考这个链接MYSQL 保留字

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

SQL注入

如何防止 PHP 中的 SQL 注入?

于 2013-04-12T05:28:29.740 回答