2017-11-23 20 views
0

私のデータベースには2つのテーブルがあります。最初のテーブルにレコードを挿入すると、私はidを自動的に生成し、2番目のテーブルの新しいレコードに追加する必要があります。Sqlテーブルから別のテーブルへのIDを挿入

だから私はこのレコードからidを取る必要があります。

$sql = "INSERT INTO movies (title, year, format); 

と、このレコード内でそれを置く:あなたの最後の挿入クエリからIDを取得するための内蔵PHP関数以下

$sql = "INSERT INTO actors(name, last_name, movi_id); 
-----------------------------------------------^ 
               HERE 
+1

が重複する可能性[私はMySQLのテーブルの最後に挿入IDを取得するにはどうすればよいですPHPで?](https://stackoverflow.com/questions/1685860/how-do-i-get-the-last-inserted-id-of-a-mysql-table-in-php) – Ignatius

+0

@jaikrexeあなたが必要ですmysqli_insert_id()関数を使用して問題を解決してください。 –

答えて

1

使用:

mysqli_insert_id(); 

問題を解決するには、コードが以下のようになっている必要があります。

$sql = "INSERT INTO movies (title, year, format) VALUES ($title, $year, 
$format)";  
$movi_id = mysqli_insert_id(); 
$sql = "INSERT INTO actors(name, last_name, movi_id) VALUES ($name, 
$last_name, $movi_id)"; 

あなたが作るためにプリペアドステートメントをして、クエリの上に書くことができればそれは良いでしょう、それより安全な

// prepare and bind Movies Query 
$queryMovies = $conn->prepare("INSERT INTO movies (title, year, format) 
VALUES (?, ?, ?)"); 
$queryMovies->bind_param("sss", $title, $year, $format); 

// execute Movies Query 
$queryMovies->execute(); 

// Get last inserted Id of Movies Query 
$movi_id = $queryMovies->insert_id; 

// prepare and bind Actors Query 
$queryActors = $conn->prepare("INSERT INTO actors (name, last_name, movi_id) 
VALUES (?, ?, ?)"); 
$queryActors->bind_param("sss", $name, $last_name, $movi_id); 

// execute Actors Query 
$queryActors->execute(); 

// Close Connections 
$queryMovies->close(); 
$queryActors->close(); 
+0

この回答は技術的に間違っているわけではありませんが(実際にはクエリを実行していませんが)、データのエスケープやプリペアドステートメントの使用については何も言及していません。 –

+0

@ChelseaUrquhart誰かを助けることで、私はそれを受ける準備ができています:) –

+0

申し訳ありません...私はトランザクションの欠如のためにそれをdownvotedしていませんでしたが、SQLインジェクションの脆弱性は非常に危険で、 OPや他の人が同じ質問で容易にコピー&ペーストできる例には広げてはいけません。 –

関連する問題