0

私はこれを完全に間違っていることを知っていますが、現在私は持っています:

$genre0 = addslashes(strip_tags($movieInfo[genres][0][name]));
$genreid0 = addslashes(strip_tags($movieInfo[genres][0][id]));
...
$genre4 = addslashes(strip_tags($movieInfo[genres][4][name]));
$genreid4 = addslashes(strip_tags($movieInfo[genres][4][id]));

それで

mysql_query($query = "INSERT INTO tblMovies (movie_id, genre_id, genre_name) VALUES ($movie_id , $genreid0, $genre0");
...
mysql_query($query = "INSERT INTO tblMovies (movie_id, genre_id, genre_name) VALUES ($movie_id , $genreid4, $genre4");

これは非常に反復的であることは知っていますが、それが機能することを理解できる唯一の方法です。私は大量の for each ステートメントを無駄にしようとしました。私はこれに従って、php配列を介して複数の行をmysqlおよび他のいくつかに挿入しようとしましたが、それを理解できないようです。

これは、映画のリストを実行する SELECT/WHILE ステートメントに埋め込まれています...

ヒントや提案をいただければ幸いです。

ありがとう!

4

3 に答える 3

2

クエリを簡単に実行するために、準備済みステートメントを使用できます。

      $stmt = $dbh->prepare("INSERT INTO tblMovies (movie_id, genre_id, genre_name)
                             VALUES (:movie_id , :genreid, :genre")");

      $stmt->bindParam(':movie_id ', $movie_id);
      $stmt->bindParam(':genreid', $genreid);
      $stmt->bindParam(':genre', $genre);

      for($i=0; $i < count($movieInfo['genres']); $i++){
         $movie_id = i;
         $genreid = addslashes(strip_tags($movieInfo['genres'][i]['id']));
         $genre = addslashes(strip_tags($movieInfo['genres'][i]['name']));
         $stmt->execute();
      }
于 2012-12-29T07:09:35.923 に答える
0

mysql_XXXの使用を主張する場合:

foreach ($movieInfo['genres'] as $genre) {
    $genre = mysql_real_escape_string(strip_tags($genre['name']));
    $genreid = mysql_real_escape_string(strip_tags($genre['id']));
    mysql_query("INSERT INTO tblMovies (movie_id, genre_id, genre_name) VALUES ($movie_id , '$genreid', '$genre'");
}
于 2012-12-29T07:03:21.870 に答える
0

レコードごとに個別のクエリを起動するのではなく、単一のクエリを起動してデータベースに複数のレコードを挿入することを主張します。

例えば:

INSERT INTO tblMovies
  (genre_id, genre_name)
VALUES
  ('Name 1', 'Value 1'),
  ('Name 2', 'Value 2'),
  ('Name 3', 'Value 3'),
  ('Name 4', 'Value 4');


//Prepare the entire query using foreach and then fire single query.
foreach ($movieInfo['genres'] as $genre) {
    $genre = mysql_real_escape_string(strip_tags($genre['name']));
    $genreid = mysql_real_escape_string(strip_tags($genre['id']));
    $parts[] = "('.$genreid.', '.$genre.')";
}

$str = implode("," $parts);
$query = "INSERT INTO tblMovies (genre_id, genre_name) VALUES ".$str.";";
mysql_query($query) or die(mysql_error());

注:mysql質問で述べたように使用しましたが、またはに切り替えることをお勧めします。また、あなたが言及した質問から、それは自動インクリメントであると思います。mysqliPDO$movie_id

于 2012-12-29T07:12:19.447 に答える