У меня есть html-форму, например
<form action="form.php" method="post"> First name:<br> <input type="text" id="fname" name="fname"> <br> Last name:<br> <input type="text" id="lname" name="lname"> <br><br> <input type="submit" value="Submit"> </form>
и form.php
<?php $servername = "localhost"; $username = "database1"; $password = "xxxxxxxx"; $dbname = "database1"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } //escape variables for security $fname = mysqli_real_escape_string($conn, $_POST['fname']); $lname = mysqli_real_escape_string($conn, $_POST['lname']); $sql = "INSERT INTO mytable (fname,lname) VALUES ('$fname','$lname')"; if ($conn->query($sql) === TRUE) { echo "Successfully Saved"; } else { echo "Error: Go back and Try Again ! " . $sql . "<br>" . $conn->error; } $conn->close(); ?>
Form.php сохраняет данные в database1
данных1.
Я хочу, чтобы эти данные сохранялись в другой базе database2
базы database2
вместе с database1
.
Является ли это возможным ?? Если да, то какие изменения должны быть внесены в код?
Если это невозможно, можно ли автоматически копировать данные из database1
в database2
данных2? Всякий раз, когда новая строка добавляется в database1
данных1, она должна автоматически копироваться в database2
.
Я хочу, чтобы те же данные были в двух разных базе данных. Как я могу достичь любого из вышеуказанного?
С php вам просто нужно создать новое соединение с БД.
<?php $servername = "localhost"; $username = "database1"; $password = "xxxxxxxx"; $dbname = "database1"; $servernameS = "localhost"; $usernameS = "database2"; $passwordS = "xxxxxxxx"; $dbnameS = "database2"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); $connS = new mysqli($servernameS, $usernameS, $passwordS, $dbnameS); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } if ($connS->connect_error) { die("Connection failed: " . $connS->connect_error); } //escape variables for security $fname = mysqli_real_escape_string($conn, $_POST['fname']); $lname = mysqli_real_escape_string($conn, $_POST['lname']); $sql = "INSERT INTO mytable (fname,lname) VALUES ('$fname','$lname')"; if ($conn->query($sql) === TRUE) { echo "Successfully Saved"; } else { echo "Error: Go back and Try Again ! " . $sql . "<br>" . $conn->error; } if ($connS->query($sql) === TRUE) { echo "Successfully Saved"; } else { echo "Error: Go back and Try Again ! " . $sql . "<br>" . $connS->error; } $conn->close(); $connS->close(); ?>
Похоже, вам нужно настроить репликацию.
Вот официальная документация по тиражированию. Вот более простое пошаговое руководство по настройке.
Если репликация не то, что вы хотели, вы могли бы сделать то же самое, подключившись к базе данных2 в дополнение к базе данных1, затем выполнив запрос один раз на обоих.
Вы можете использовать что-то вроде метода mysqli :: selectDB :
<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "test"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } /* return name of current default database */ if ($result = $mysqli->query("SELECT DATABASE()")) { $row = $result->fetch_row(); printf("Default database is %s.\n", $row[0]); $result->close(); } /* change db to world db */ $mysqli->select_db("world"); /* return name of current default database */ if ($result = $mysqli->query("SELECT DATABASE()")) { $row = $result->fetch_row(); printf("Default database is %s.\n", $row[0]); $result->close(); } $mysqli->close(); ?>
Ознакомьтесь с руководством .
Аналогичный вопрос, как у вас в SO.