Проблема с подключением PHP к таблицам MySQL - PullRequest
0 голосов
/ 18 декабря 2018

Моя проблема заключается в следующем:

(1) на сервере у меня есть база данных в MySQL.Содержит 7 таблиц.(2) На переднем крае у меня есть HTML-форма.(3) Данные, введенные пользователем, должны заполнить эти 7 таблиц.(4) Я использую PHP и связываю форму с базой данных с помощью mysqli.

По какой-то причине форма заполнила только первую таблицу, а остальные 6 не получили данных.Любая идея, как я могу подключить форму ко всем таблицам одновременно?Я не хочу одну таблицу SQL, потому что форма HTML имеет более 300 полей ввода.Спасибо вам.

отредактировано

Вот код

<?php
$host="localhost";
$user="root";
$pass="";
$db="ao db";

$conn = new mysqli ($host, $user, $pass, $db);

if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error);
}

$firstname = $_POST["first_name"];
$lastname = $_POST["name"]; 
$female = $_POST["female"];

$stmt = $conn->prepare("INSERT INTO table_demo (Vorname, Nachname, female) VALUES (?, ?, ?)");
$stmt->bind_param("ssi", $firstname, $lastname, $female);

$stmt->execute();
$stmt->close();
echo "New records created in Demo";
$conn->close();

$link = new mysqli ($host, $user, $pass, $db);

if ($link->connect_error) { 
die("Connection failed: " . $link->connect_error);
}

$height = $_POST["height"];
$weight = $_POST["weight"];

$stmt=$link->prepare("INSERT INTO table_pre (height, weight) VALUE (?, ?)");
$stmt->bind_param("ii", $height, $weight);

$stmt->execute();

$stmt->close();
echo "New records created in Pre";
$link->close();

>

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Я понял это!Там, где 2 проблемы:

Проблема одна : таблицы не были созданы правильно, а внешний ключ был неправильно подключен.У меня проблема с созданием таблиц с внешним ключом через меню phpmyadmin.Может быть, лучше использовать базу данных SQL и синтаксис создания таблицы:

CREATE DATABASE IF NOT EXISTS database_name;

USE database_name;

CREATE TABLE table_1
(
    table_1_id int not null auto_increment primary key,
    variable_1 varchar(255) not null,
    variable_2 int(11),
    ...
    variable_to_be_used_as_foreign_key text,
    variable_n text,
) ENGINE=InnoDB;

CREATE TABLE table_2
(
    table_2_id int not null auto_increment primary key,
    variable_1 varchar(255) not null,
    variable_2 int(11),
    ...
    variable_n text,
    variable_to_be_used_as_foreign_key text,

    FOREIGN KEY fk_table_2(variable_to_be_used_as_foreign_key)
         REFERENCES table_1(variable_to_be_used_as_foreign_key)
              ON UPDATE CASCADE
              ON DELETE RESTRICT
) ENGINE=InnoDB;

ОБРАТИТЕ ВНИМАНИЕ: переменная внешнего ключа должна быть добавлена ​​в обе таблицы (я знаю, что это очевидно, но все же).

Проблема # 2 : произошел сбой в коде php.Я пропустил в подготовленном операторе ввод в столбце внешнего ключа во второй таблице, а именно:

$stmt=$link->prepare("INSERT INTO table_pre (height, weight) VALUE (?, ?)");
$stmt->bind_param("ii", $height, $weight);

вместо:

$stmt=$link->prepare("INSERT INTO table_pre (height, weight, female) VALUE (?, ?, ?)");
$stmt->bind_param("iii", $height, $weight, $female);
0 голосов
/ 18 декабря 2018
  1. Для первого кода вы должны создать объекты соединения с БД.

`

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}`

для вставки в таблицу.С помощью этого вы можете вставить детали во все ваши семь таблиц.

$sql = "INSERT INTO MyGuests (firstname, lastname, email)VALUES ('John', 'Doe', 'john@example.com')";

выборка деталей из таблицы, используя это.С помощью этого вы можете выбрать из всех ваших семи таблиц.

$sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = $conn->query($sql);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...