嗨,想用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与最后我我 有人可以帮忙吗?
答案 0 :(得分:0)
简答:RTM
长答案(来自mysql文档)当生成新的AUTO_INCREMENT值时,您也可以通过执行SELECT LAST_INSERT_ID()语句来获取它
您没有自动生成新ID,而是直接指定值。因此,您可以执行以下两项操作之一:从第一个查询中删除id列和value:id占位符,或在第二个查询中使用相同的:id占位符。