gpt4 book ai didi

php - 插入 mySQL

转载 作者:行者123 更新时间:2023-11-29 06:14:29 24 4
gpt4 key购买 nike

所以我有 3 个表:donorblood_typeuser_account。我正在尝试填充包含 user_idblood_iddonor 表,但是 blood_group 之间没有连接和 user_account 表,所以我尝试了这个,但没有成功。有人可以告诉我我做错了什么吗?我对 php 和数据库很陌生。

<?php
if(isset($_POST['submit'])) {

$conn = mysqli_connect("localhost", "root" , "");

if(!$conn) {
die("Cannot connect: ");
}

mysqli_select_db($conn,"blood_bank_project");

$sql = "INSERT INTO user_account(username, password) VALUES ('$_POST[user]', '$_POST[psw]');";
$sql .="INSERT INTO donor(first_name,last_name,email_add,gender, birthday, telephone, city, last_donation,user_id, blood_id)VALUES('$_POST[fname]', '$_POST[lname]', '$_POST[email]', '$_POST[gender]', '$_POST[Birthday]', '$_POST[Telephone]', '$_POST[city]', '$_POST[lastdonation]')";
$sql .="UPDATE donor SET blood_id = (SELECT blood_id from blood_type where blood_group= '$_POST[bloodgroup]');";
$sql .="UPDATE donor SET user_id = (SELECT user_id from user_account where username= '$_POST[user]')";

if(mysqli_multi_query($conn, $sql)){
echo'executed';
}
}
?>

最佳答案

您可以使用 SELECT 子句为 INSERT 生成值。在这种情况下,您可以使用它从其他表中选择适当的值。

INSERT INTO donor (user_id, blood_id, first_name,last_name,email_add,gender, birthday, telephone, city, last_donation)
SELECT u.user_id, b.blood_id,
'$_POST[fname]', '$_POST[lname]', '$_POST[email]', '$_POST[gender]', '$_POST[Birthday]', '$_POST[Telephone]', '$_POST[city]', '$_POST[lastdonation]'
FROM user_accounts AS u
CROSS JOIN blood_type AS b
WHERE u.username = '$_POST[user]' AND b.blood_group= '$_POST[bloodgroup]'

我还强烈建议您使用准备好的查询而不是替换 $_POST 变量,因为后者会使您遭受 SQL 注入(inject)。我还建议不要使用 mysqli_multi_query——它很少需要,只会让成功检查变得更加困难。如果您使用单独的查询插入 user_accounts,则可以使用 mysqli_insert_id($conn) 获取插入时分配的 user_id user_accounts,而不是使用上面的 JOIN。您也可以使用 MySQL 内置函数 LAST_INSERT_ID() 来获取它。

$stmt = mysqli_prepare($conn, "INSERT INTO user_account(username, password) VALUES (?, ?);") or die("Can't prepare user_account query: " . mysqli_error($conn));
mysqli_stmt_bind_param($stmt, "ss", $_POST['user'], $_POST['psw']);
mysqli_execute($stmt);
$stmt2 = mysqli_prepare($conn, "
INSERT INTO donor (user_id, blood_id, first_name,last_name,email_add,gender, birthday, telephone, city, last_donation)
SELECT LAST_INSERT_ID(), b.blood_id, ?, ?, ?, ?, ?, ?, ?, ?
FROM blood_type AS b
WHERE b.blood_group= ?") or die ("Can't prepare donor query: " . mysqli_error($conn));
mysqli_stmt_bind_param($stmt2, "sssssssss", $_POST['fname'], $_POST['lname'], $_POST['email'], $_POST['gender'], $_POST['Birthday'], $_POST['Telephone'], $_POST['city'], $_POST['lastdonation'], $_POST['bloodgroup']);
mysqli_execute($stmt2);

关于php - 插入 mySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36609534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com