左连接和最后插入ID困境

时间:2014-12-19 13:59:36

标签: php mysql pdo mysqli

嗨,想用PHP建立一个注册和彩票应用程序 我希望在用户注册后在我的奖品表中创建用户ID,并且当用户购买门票时我想添加到我的buy_count中...

所以我有两张桌子:

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>

仍然没有做我想要的...没有添加任何数据到表和AI users_id与最后我我 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

简答:RTM

长答案(来自mysql文档)当生成新的AUTO_INCREMENT值时,您也可以通过执行SELECT LAST_INSERT_ID()语句来获取它

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