2017-01-04 41 views
0

我目前正在做一個計算項目,它要求我使用一個id(這是一個表中的主鍵)作爲另一個表的輔助鍵。我想用會話使用類似的命令,以保持變量的軌跡這個使用mySql檢索基於條件的某個值

$id=$_SESSION['id']; 

不過我目前有來自它的主鍵的表中獲取ID的問題。這是MySQL聲明我使用。

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error);} 
$sql='INSERT INTO user(email,pass) VALUES ("'.$email.'","'.$pass.'")'; 
if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 
$sql='SELECT id FROM user WHERE user(email)="'.$email'"' 

我已經做了一些尋找,但還沒有找到任何如何做到這一點的例子。這些信息正在發送到數據庫,並且正在生成ID,我將在所有工作完成後添加驗證。不過,我無法從數據庫中檢索特定的ID。還有一個特定的變量,我不得不使用(如$結果),或者我只是在查詢完成後做$ id = $ sql?

+0

連接的屬性來獲取從最後插入的主鍵[Little Bobby](http://bobby-tables.com/)說*** [你的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can-i - 防止-SQL注入功能於PHP)***。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

+1

**切勿存儲純文本密碼!**請使用PHP的[內置函數](http://jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用'password_hash()'[兼容包](https://github.com/ircmaxell/password_compat)。確保你*** [不要越獄密碼](http://stackoverflow.com/q/36628418/1011527)***或在哈希之前使用其他任何清理機制。這樣做*更改密碼並導致不必要的附加編碼。 –

回答

0

試試這個:

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error);} 
$sql='INSERT INTO user(email,pass) VALUES ("'.$email.'","'.$pass.'")'; 
if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$lastId = mysqli_insert_id($con); 
+0

做或不​​做。沒有「嘗試」。一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –

+0

@JayBlanchard:是的,你是對的先生..記住這一點:)謝謝你的建議。 –

2

相反運行的另一個查詢,和mysqli提供了一種方法使用名爲insert_id這樣

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$sql = "INSERT INTO user(email,pass) VALUES('$email','$pass'"); 
if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 

    // get the id 
    $lastId = $conn->insert_id; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
}