繁体   English   中英

使用PHP如何从数据库表中检索某个字段值,然后将该单个字段值输入到新表中

[英]Using PHP how do I retrieve a certain field value from a database table and then input that single field value into a new table

这是我尝试过的...我正在使用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函数从数据库中提取字段值但它只输出值,我需要将它放入另一个表中。

不要手动查找ID,而是使用lastInsertId()

$s->execute();
$returned_id = $pdo->lastInsertId();

然后您可以根据需要使用它。

$fieldValue = $returned_id;

$ returned_id不应该在引号中

一个很好的方法是创建自己的功能。

 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语句中或其他任何您喜欢的地方使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM