2017-01-04 3 views
0

私は現在、あるテーブルの主キーであるidを別のテーブルの2次キーとして使用する計算プロジェクトを行っています。私は現在のテーブルからIDを取得する問題を抱えているしかし、私はそれが主キーだ。このようなコマンドmySqlを使用して条件に基づいて特定の値を取得する

$id=$_SESSION['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

ようinsert_idと呼ばれる接続のプロパティを使用して、最後の挿入から主キーを取得する方法を提供します[Little Bobby](http://bobby-tables.com/)は*** [あなたのスクリプトはSQLインジェクション攻撃の危険にさらされていると言います。](http://stackoverflow.com/questions/60174/how-can-i -prevent-sql-injection-in-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)を使用してください。 5.5より小さいPHPバージョンを使用している場合、 '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のためだけでなく、将来の訪問者のためにそうした方法で行われたのかについての説明を常に持っています。 –

+0

@JayBlanchard:はい、あなたは正しいです。それを心に留めておいてください。提案に感謝します。 –

2

、mysqliのはこの

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; 
} 
関連する問題