所以,我一直在寻找一个解决方案来解决我的问题,但我一直在寻找部分而不是解决问题的答案。
首先,让我描述一下我想要实现的目标。
在我的数据库中,我有两个表:PLACES和PLACES_CATEGORIES,它们由多个实体中的第三个表PLACES_A_CATEGORIES连接。这是因为PLACE可以用一个或多个类别来表征(但它也可以没有任何类别)。
我想将以一种形式发送的数据添加到两个表中:PLACES和PLACES_A_CATEGORIES。用户列出了带有复选框的所有类别,他可以(但不必)检查其中的一个或多个。
我自动显示了这些复选框,因此它会对数据库中的更改做出相应的反应(比如添加或删除类别)。这部分工作正常,但让我为您展示代码,因为它可能有助于解决实际问题:
$query = "SELECT name FROM places_categories";
$result = $connection->query($query);
$category_no = $result->num_rows;
echo "Categories of places:";
for ($j = 0; $j < $category_no; ++$j)
{
$category = $result->fetch_assoc()['name'];
echo '<br><input type="checkbox" id="'.$category.'" name="places_categories" value="'.$category.'"><label for="'.$category.'">'.$category.'</label><br>';
}
所以,让我们回到问题所在。我想:
所以,现在让我告诉你我是如何尝试解决这个问题的,下面我将解释我做了什么以及为什么做了。
if ($everything_OK==true)//Hurra, everything is ok, lets add the place to the database
{
mysqli_query($connection, "SET NAMES utf8");//need it for special characters
//Adding multiple rows of data to database
$query = "SELECT name FROM places_categories";
$result = $connection->query($query);
$category_no = $result->num_rows;
for ($j = 0; $j < $category_no; ++$j)
{
$category[$j] = $result->fetch_assoc()['name'];
if ($_POST['places_categories'] == $category[$j])
{
//counts number of records in table PLACES
$query1 = "SELECT name FROM places";
$result1 = $connection->query($query1);
$places_no = $result1->num_rows;
$places_no += 1;
//looks for category_id in table places_categories where the name matches the current value from form
$query2 = "SELECT category_id FROM places_categories WHERE name='$category[$j]'";
$result2 = $connection->query($query2);
$what_category_id = mysqli_fetch_array($result2);
$connection->query("INSERT INTO places_a_categories VALUES ('$places_no', '$what_category_id')");
}
}
if ($connection->query("INSERT INTO places VALUES (NULL, 0, 0, 0, '$name', '$wysokosc', '$zajawka', '$zatloczenie', '$data_dodania', '$data_edycji', '$szer_geo', '$dlu_geo', '$tytul', '$opis', '$adres', '$tresc')"))
{
echo "Test!";
}
else
{
throw new Exception($connection->error);
}
}
好的,解释:
结果如何?数据被添加到表PLACES完全没有问题。但是第二张表中没有添加任何内容。此外,我没有收到任何错误消息。它可能是一些我无法看到的愚蠢错误......任何想法?我做错了什么?