我有2个表,用户日志是人们使用他们的电子邮件和密码进行注册的地方,另一个表名为user,用户可以在其中填写自己的个人资料。
如何使用SQL查询插入在表单中插入的数据?
考虑到表用户使用带有id ...
的表用户日志进行引用我的意思是
User log
Id
Email
Password
User
Id
User_id fk id reference userlog(id)
Name
Surname
这是我登录的代码
<?php
session_start();
if (isset($_SESSION['usuario'])) {
header('Location: index.php');
}
$errores = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$email = filter_var(strtolower($_POST['email']), FILTER_SANITIZE_STRING);
$password = $_POST['password'];
$password = hash('sha512', $password);
try {
$conexion = new PDO('mysql:host=localhost;dbname=DATABASE, 'USER', 'PASS');
} catch (PDOException $e) {
echo "Error:" . $e->getMessage();;
}
$statement = $conexion->prepare('
SELECT * FROM userlog WHERE email = :email AND password = :password'
);
$statement->execute(array(
':email' => $email,
':password' => $password
));
$resultado = $statement->fetch();
if ($resultado !== false) {
$_SESSION['usuario'] = $resultado;
header('Location: index.php');
} else {
$errores .= '<li>Datos Incorrectos</li>';
}
}
我创建一个var_dump()来查看$ resultado中的数组带来了什么,并且它使表格的数据更加明确,但是,当我想使用数据来填充输入时,它会失败
答案 0 :(得分:1)
如果您的数据来自POST方法,请始终使用注意事项以避免SQL注入..
我将使用一个非常基本的例子。您可以增强此功能以供自己使用。
$servername = "localhost";
$username = "yourUser";
$password = "yourPass";
$dbname = "youtDB";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$sql = "INSERT INTO Userlog (email, password)
VALUES ('some_email@example.com', 'some_safe_password')";
$conn->exec($sql);
$last_id = $conn->lastInsertId();
$userSql = "INSERT INTO Userlog (userId, name, lastName) VALUES ($last_id, 'some_name', 'some_lastName')";
$conn->exec($userSql);
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
答案 1 :(得分:0)
您可以使用post方法传递数据。 试试这段代码。
$sql = "INSERT INTO users (Userlog, Id, Email, Password)
VALUES ('".$_POST["Userlog"]."','".$_POST["Id"]."','".$_POST["Email"].",'".$_POST["Password"]."')";