2013-03-23 2 views
0

Я пытаюсь поставить некоторые данные формы в двух таблиц базы данных, используя следующую логикуНесколько запросов к базе данных нанизанные

  • INSERT новых наблюдения для 'watchlists' стола
  • SELECT watchlist_id нового списка из 'watchlists' таблицы WHERE watchlist_name = $watchlist_name (имени из новых списков наблюдения только что созданных) и user_id = $user_id
  • INSERT watchlist_id (выбирается из предыдущего запроса) И film_id в 'watchlist_films' стол

Я использую следующий код, но процесс, кажется, прерывается при выполнении запроса SELECT. Новый список наблюдения создан в базе данных отлично, но он не будет выбирать идентификатор нового списка просмотра или запускать окончательный раздел кода.

if ($db_server) { 
     // Add new Watchlisth 
     if (!empty($watchlist_name)) { 
      $watchlist_name = clean_string($watchlist_name); 
      $watchlist_description = clean_string($watchlist_description); 
      mysql_select_db($db_database); 

      // Create new Watchlist 
      $insert_new_watchlist = "INSERT INTO watchlists (user_id, name, description, category) VALUES ('$user_id', '$watchlist_name', '$watchlist_description', '$watchlist_category')"; 
      mysql_query($insert_new_watchlist) or die("Insert failed. " . mysql_error() . "<br />" . $insert_new_watchlist); 

      // Select new Watchlist's ID 
      $select_new_watchlist_query = "SELECT watchlist_id FROM watchlists WHERE name = " . $watchlist_name; 
      $new_watchlist_id = mysql_query($select_new_watchlist_query); 

      // Insert film into new Watchlist 
      $add_new_film = "INSERT INTO watchlist_films (watchlist_id, film_id) VALUES ('$new_watchlist_id', '$rt_id')"; 
      mysql_query($add_new_film) or die("Insert failed. " . mysql_error() . "<br />" . $add_new_film); 
      $addWatchlist_good_message = '<div class="alert alert-success">Watchlist created successfully, and film added!</div>';?> 
      <script> 
       $('a.add-watchlist').trigger('click'); 
      </script><?php 
     } 
    } else { 
     $addWatchlist_bad_message = '<div class="alert alert-error">Error: could not connect to the database.</div.';?> 
     <script> 
      $('a.add-watchlist').trigger('click'); 
     </script><?php 
    } 
    require_once("db_close.php"); 
} 

Я выполнить запрос в PhpMyAdmin, используя следующую строку: SELECT watchlist_id FROM watchlists where name = "LotR" (где LotR это имя вновь созданного списка), и что прекрасно работает, поскольку она возвращает меня идентификатор WatchList, который является то, что Я хочу перейти во второй из двух запросов INSERT.

+1

Не используйте синтаксис mysql_query, это устаревшее, и использовать подготовленные заявления (Вы просите нас ввести код в вашу базу данных). Я рекомендую использовать PDO. В моем профиле можно найти много рабочих примеров, которые помогут решить вашу проблему в течение 10 минут. Или просто Google. – Jonast92

ответ

1

mysql_query() возвращает тип данных в ресурсов, а не значение поля, так что заменить

$new_watchlist_id = mysql_query($select_new_watchlist_query); 

с

$result=mysql_query($select_new_watchlist_query); 
$new_watchlist_id=mysql_result($result,0) 
+0

Спасибо, отлично работал.! –