-1

嘿伙计们我有这个问题.. 基本上第一个查询是 jsut 用于插入,第二个查询是用于通过外键从另一个表复制数据。有什么想法吗?我是新手.. :D

else if($payment_description == 'Monthly Subscription'){

$payment_amount = '750';
$sql = "INSERT INTO `paymentlog` (  payment_amount,payment_description,date_payment)
VALUES ( '$payment_amount', '$payment_description','$date_payment')";
$query_run = mysqli_query($conn, $sql);

$sql1 =  "INSERT INTO paymentlog (member_id, first_name, last_name)
SELECT member_id, first_name, last_name
FROM member
WHERE member_id = $id";
$query_run1 = mysqli_query($conn, $sql1);         

echo ("<script LANGUAGE='JavaScript'>
            window.alert('Monthly Payment is been added.');
            window.location.href='/PROJECT/MEMBERS/members.php';
            </script>");}
4

1 回答 1

2

我不认为您当前的代码可以满足您的要求。您正在(尝试)插入两行,而据我了解您的问题,您希望payment_log在另一个输入参数。

您可以使用以下insert ... select语法:

INSERT INTO `paymentlog` ( 
    member_id, 
    first_name, 
    last_name, 
    payment_amount,
    payment_description,
    date_payment
)
SELECT 
    member_id, 
    first_name, 
    last_name, 
    :payment_amount, 
    :payment_description,
    :date_payment
FROM member
WHERE member_id = :id

重要笔记:

  • 使用准备好的语句!不要在查询字符串中连接变量,这既低效又不安全。推荐阅读:如何防止 PHP 中的 SQL 注入

  • 从数据库设计的角度来看,您不应该members在表中复制表中的信息payment_log;存储对主键的引用member就足够了

于 2020-11-13T10:15:07.220 回答