2017-04-27 111 views
-1

我有2個表,用戶日誌是人們用他們的電子郵件和密碼註冊的地方,另一個表用戶名是用戶完成他們自己的配置文件的用戶名。問題php和MySQL

如何使用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中的數組是什麼,它使我獲得了表的數據,但是當我想用數據填充輸入時,它失敗了

+1

你爲什麼不嘗試基本的谷歌搜索?你幾乎可以在幾秒鐘內得到一個教程。或者提供一些代碼 – Akintunde007

+2

**警告**:編寫您自己的訪問控制層並不容易,並且有很多機會使其嚴重錯誤。請不要在[Laravel](http://laravel.com/)等任何現代開發框架(http://codegeekz.com/best-php-frameworks-for-developers/)上編寫自己的認證系統,內置了強大的[認證系統](https://laravel.com/docs/5.4/authentication)。絕對不要遵循[推薦的安全最佳實踐](http://www.phptherightway.com/#security)和**從不將密碼存儲爲純文本**。 – tadman

+0

爲什麼有兩張桌子?數據似乎總是一對一的關係。 – chris85

回答

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 ('[email protected]', '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(); 
    } 
+0

實際上我使用PDO。 –

+0

$ statement = $ conexion-> prepare('INSERT INTO prueba(id,nombre,apaterno,amaterno,profesion,ciudad,perfilprofe,perfilperso,tel,cel)VALUES(null,:nombre,:apaterno,:amaterno,:profesion ,:ciudad,:perfilprofe,:perfilperso,:tel,:cel)'); –

0

您可以使用post方法傳遞您的數據。 試試這個代碼。

$sql = "INSERT INTO users (Userlog, Id, Email, Password) 
     VALUES ('".$_POST["Userlog"]."','".$_POST["Id"]."','".$_POST["Email"].",'".$_POST["Password"]."')"; 
+3

晚安SQL注射.. – chris85