Попытка вставить в две таблицы, используя php и mysqli

Я работаю над блогом с постами. Я хотел бы вставить в 3 таблицы

Сообщения, Категории и Post_categories(чтобы показать правильную категорию для сообщения)

Я попробовал все, используя mysqli, такие как:

$titel  = $_POST['titel'];
$post   = $_POST['post-text'];

$sql=
"INSERT INTO posts (titel, post)
VALUES ('$titel', '$post')
INSERT INTO post_categories (idposts)
VALUES ('". $mysqli->insert_id() ."')
";

if (!mysqli_query($link,$sql))
  {
  die('Error: ' . mysqli_error($link));
  }
echo "1 record added";
mysqli_close($link);

Но это не сработало. Я застрял на два часа, и я почти сдаюсь. Я действительно не знаю, как это сделать в Mysqli. Я знал, как это работает в Mysql.

Надеюсь, кто-то может помочь мне с этим.

Моя структура таблицы выглядит так:

Сообщений

idposts
Titel
сообщение
добавленной

категории

idcategories
категория

post_categories

Я бы
idposts
idcategories

2 ответа

Решение

Поскольку вы вставляете в несколько таблиц, попробуйте также использовать транзакции. Также вы не можете получить mysql_insert_id() до того, как запрос будет выполнен.

mysqli_autocommit($link, FALSE);
$sql = "INSERT INTO posts (titel, post) VALUES ('".$titel."', '".$post."')";
if (mysqli_query($link, $sql ) === TRUE) {
  $postId = mysqli_insert_id($link);
   $sql1 = "INSERT INTO post_categories (idposts) VALUES ('".$postId."')";
   mysqli_query($link, $sql1 );
}
if (!mysqli_commit($link)) { //commit transaction
   print("Table saving failed");
    exit();
}

Вы не можете выполнить два запроса одновременно, используя mysqli_query, вместо этого вы должны использовать mysqli_multi_query, если вы действительно хотите это сделать

Другие вопросы по тегам