这是我尝试过的...我使用select语句从父表中获取id,其中电子邮件等于用户提供的电子邮件。从父表中获取id之后,我想将此id设置为子表中的parent_id字段,并将其设置为子表中的字段值。
例如,我的父表有id,first_name,last_name,地址,电话,电子邮件,picture_approval和日期。然后子表具有id,child_first_name,child_last_name和parent_id
// already connected to database successfully
{
try
{
$sql = 'INSERT INTO parents SET
first_name = :fname,
last_name = :lname,
address = :address,
phone = :phone,
email = :email,
picture_approval = :picture,
date = NOW()';
$s = $pdo->prepare($sql);
$s->bindValue(':fname', $_POST['g_first_name']);
$s->bindValue(':lname', $_POST['g_last_name']);
$s->bindValue(':address', $_POST['address']);
$s->bindValue(':phone', $_POST['phone']);
$s->bindValue(':email', $_POST['email']);
$s->bindValue(':picture', $_POST['pictures']);
$s->execute();
}
catch (PDOException $e)
{
$errors[] = 'Error adding parent to database.';
}
}
//the above code works perfectly
但是下一部分永远不会奏效。
try
{
$sql = "SELECT id FROM parents WHERE email = :email";
$s = $pdo->prepare($sql);
$s->bindValue(':email', $_POST['email']);
$s->execute();
$s->bind_result($returned_id);
$s->fetch();
$fieldValue = "$returned_id";
}
catch (PDOException $e)
{
$errors[] = 'Error retrieving parent.';
}
然后我想设置我的INSERT INTO子语句...但不确定如何,因为我的SELECT语句似乎没有正常工作。 我确实找到了这个PHP function to extract a field value from a database,但它只输出了值,我需要把它放到另一个表中。
答案 0 :(得分:2)
答案 1 :(得分:1)
$fieldValue = $returned_id;
$ returned_id不应该在引号中
答案 2 :(得分:0)
这样做的好方法是创建自己的功能。
function getParentID($conn, $email)
{
$sql = "SELECT id FROM parents WHERE email='$email' LIMIT 1";
foreach ($conn->query($sql) as $row)
{
$parentIDinside = $row['id'];
}
return $parentIDinside;
}
然后调用该函数。您将传递数据库连接和电子邮件地址,该函数将找到与该电子邮件地址匹配的parentID。可以修改此功能。
include 'includes/db.inc.php'; //my database connection that creates a new $pdo connection
$parentID = getParentID($pdo, $_POST['email']);
现在,变量$ parentID使用提供的电子邮件存储数据库中的实际parentID,您可以在INSERT语句或其他任何您喜欢的地方使用它。