2013-04-12 3 views
0

Я пытаюсь выполнить POST на две таблицы одновременно. Я пытаюсь получить DonorID для отображения в другой таблице под $description. Я могу просто написать любой текст в $description, но мне нужно, чтобы он был динамическим, а не статическим, что и есть текст. У меня есть две таблицы; первый - accounting, а второй - donations. Я пытаюсь изменить $description='Donation from Donor'; и у вас есть донор, который сделал транзакцию в списке, где находится Донор. Любые предложения будут ценны.Php Сообщение для двух таблиц в Mysql

Вот мой код:

<?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') ; 
    ?> 
+0

Вы не выполняете запрос '$ sql', также я бы не использовал' mysql_' для нового проекта, пожалуйста, переключитесь на 'mysqli' или' PDO' – Fabio

ответ

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); 

Пожалуйста выполнить запрос.

+0

Хорошо, я добавил mysql_query ($ sql); но как сделать, чтобы сделать динамическое описание, и убедиться, что донор попадает туда? Какой синтаксис я бы использовал? –

+0

, тогда вы можете запустить запрос выбора на идентификаторе донора, а затем использовать этот идентификатор пожертвования и добавить его в свою переменную decription. –

0

вещей я вижу ..

Сначала ваше просто выполняя ваш $sql2, но не другой $sql заявления

Другого при вставке вы объявляли некоторые столбцы имя, которое является MySQL зарезервированного слова (date колонка)

у вас должны быть «обратные ключи для них».

Обратитесь к этой ссылке MYSQL RESEERVED WORDS

дополнительное примечание: Ваш запрос также уязвима для SQL инъекций

SQL INJECTION

How to prevent SQL injection in PHP?

+0

Я немного поработал над SQL Injection .. я запустил '); пожертвования на стопку; - и ничего не случилось. За исключением того, что он сказал, что существует ошибка Mysql. Можете ли вы показать мне, для какой инъекции я уязвим? –

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 вы можете добавить donorid просто поместив оба ВАР в запросе, как:

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

этот путь я просто отделить donorid и description с места, но вы можете добавить все, что вы хотите в виде обычного текста :

'".$donorid . " - " . $description."' 
+0

ОК, я внес изменения, но есть ли у вас предложение о том, чтобы донорство появилось в описании? –

+0

Да, я собираюсь изменить свой ответ – Fabio

+0

Я только что отредактировал свой ответ, пожалуйста, проверьте – Fabio

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')" 

, который будет принимать всю информацию из donoation для данного donorid и перечислить его в соответствии с описанием в учете

0

Просто напишите после вставки на спусковой крючок на первой таблице для вставки данных в другую таблицу.

Смежные вопросы