Php 左连接和最后插入的ID

Php 左连接和最后插入的ID,php,mysql,pdo,mysqli,Php,Mysql,Pdo,Mysqli,您好,我想用php构建一个注册和彩票应用程序 我想在用户注册后在我的奖品表中创建一个用户id,并且我想在用户购买门票时添加我的购买数量 所以我有两张桌子: prize , users prize : users_id , buy_count users : fn , ln , pass...usual staff 这是sctipt用户注册表: $sql = 'INSERT INTO users (id,fn,ls,psw) VALUES (:id,:fn,:ln,:psw); INSERT

您好,我想用php构建一个注册和彩票应用程序 我想在用户注册后在我的奖品表中创建一个用户id,并且我想在用户购买门票时添加我的购买数量

所以我有两张桌子:

prize , users

prize : users_id , buy_count
users : fn , ln , pass...usual staff
这是sctipt用户注册表:

$sql = 'INSERT INTO users (id,fn,ls,psw) VALUES (:id,:fn,:ln,:psw);
INSERT INTO prize (user_id, buy_count) VALUES (LAST_INSERT_ID(), 4)';
脚本给了我一个错误,怎么了?我想在用户注册时添加到奖励表中的用户id,我的查询有什么问题? 做这件事的正确方法是什么


更新:

这是我的代码:

<?php



try {
    require_once 'inc/connect.php';

    $sql =("
INSERT INTO users (fn,ls,psw) VALUES (:fn,:ln,:psw);
INSERT INTO prize (user_id) VALUES (LAST_INSERT_ID());
    ");



$form = $_POST;
$fn = $form['fn'];
$ln = $form['ln'];
$psw = $form['psw'];

    $values = array(
':fn' => $fn ,
':ln' => $ln ,
':psw' => $psw

    );

    $stmt = $db->prepare($sql);
    $stmt->execute($values);



    if ( $stmt ){
        echo "<p>Thank you. You have been registered</p>";
    } else {
        echo "<p>Sorry, there has been a problem inserting your details. Please contact admin.</p>";
    }

    $errorInfo = $db->errorInfo();
    if (isset($errorInfo[2])){
        $error = $errorInfo[2];
    }



} catch (Exception $e) {
    $error = $e->getMessage();
}
?>




<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Database Connection with PDO</title>
    <link href="../../styles/styles.css" rel="stylesheet" type="text/css">
</head>
<body>
<h1>Connecting with PDO</h1>
<?php if(isset($error)) {
    echo "<p>$error</p>";
}else {

    ?>
<?php
if ( empty( $_POST ) ) {
    ?>



    <h1>Registration</h1>
    <form name="" action="" method="POST">
        <label for 'username'>Username: </label>
        <input type="text" name="fn"/>
        <label for 'password'>Password: </label>
        <input type="password" name="psw"/>
        <label for 'first_name'>First name: </label>
        <input type="text" name="fn"/>

        <br/>
        <button type="submit">Submit</button>
    </form>


<?php
} else {
    print_r( $_POST );
}
    ?>



<?php } //error  ?>

</body>
</html>

与PDO的数据库连接
与PDO连接
登记
用户名:
密码:
名字:

提交
仍然没有做我想做的。。。不向表和AI用户id添加任何数据 任何人都可以帮忙吗?

简短回答:RTM

长答案(来自mysql文档)当生成新的自动增量值时,您还可以通过执行SELECT LAST_INSERT_ID()语句来获得它


您不是自动生成新ID,而是直接指定值。因此,您可以执行以下两种操作之一:从第一个查询中删除id列和value:id占位符,或者在第二个查询中使用相同的:id占位符。

它们是两个独立的语句。也许应该分别执行它们。是否尝试使用不同的变量运行这两个查询?因此,将查询:)从一个变量中的两个拆分为每个变量的一个,并一次执行一个。请提供错误。可能重复的家伙:D我知道它们是两个单独的查询,我只是复制了它,我想让ed知道如何执行这两个查询并使其与一个submit一起工作+我想知道我的查询是否正确?因此我做到了:$sql='INSERT INTO users(fn,ls,psw)value(:fn,:ln,:psw)'$sqlp='INSERT INTO PRIVE(user_id)值(LAST_INSERT_id())',我仍然不知道如何用一个submito来执行这两个查询我知道了mysqli multi_query($query)我会做的你用mysqli还是pdo?如果您使用的是mysqli,那么您可以使用$mysqli->multi_query方法。为什么您要在一个PDO execute中执行两个查询?如果你想使用PDO,你需要根据GolezTrol和Michael Berkowski的评论来分离你的查询。否则,请使用mysqli多重查询。请发布您的错误,以便我们确定问题的实际位置。