Я пытался вставить данные из одной таблицы в другую, и это сообщение об ошибке я получаю:PHP Вставка данных из одной таблицы в другую
Error: INSERT INTO content2 (d1, d2, d3) VALUES (John, Doo, 24);
Unknown column 'John' in 'field list'Error: INSERT INTO content2 (d1, d2, d3) VALUES (Mary, Moe, 36);
Unknown column 'Mary' in 'field list'Error: INSERT INTO content2 (d1, d2, d3) VALUES (Julie, Dooley, 42)
Unknown column 'Julie' in 'field list'Error: INSERT INTO content2 (d1, d2, d3) VALUES (John, Doo, 24);
Unknown column 'John' in 'field list'Error: INSERT INTO content2 (d1, d2, d3) VALUES (Mary, Moe, 36);
Unknown column 'Mary' in 'field list'Error: INSERT INTO content2 (d1, d2, d3) VALUES (Julie, Dooley, 42);
Unknown column 'Julie' in 'field list'
Вот мой PHP код:
//Get Connection
require_once('connect.php');
//Get Data
$sql = "SELECT d1, d2, d3 FROM content";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
$row1 = $row["d1"];
$row2 = $row["d2"];
$row3 = $row["d3"];
//Insert Data to another table
$sql = "INSERT INTO content2 (d1, d2, d3)
VALUES ($row1, $row2, $row3);";
if (mysqli_multi_query($con, $sql)) {
echo "New records created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($con);
}
//echo "id: " . $row["d1"]. " - Name: " . $row["d2"]. " " . $row["d3"]. "<br>";
}
} else {
echo "0 results";
}
Я не мог понять, в чем проблема. Пожалуйста, помогите
'VALUES ($ row1, $ row2, $ row3) 'to' VALUES ('$ row1', '$ row2', '$ row3') ' –
** ПРЕДУПРЕЖДЕНИЕ **: при использовании' mysqli' вы должны использовать параметризованные запросы и ['bind_param'] (http : //php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ используйте ** интерполирование строк или конкатенацию, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). ** НИКОГДА ** не вводить необработанные пользовательские данные непосредственно в запрос. – tadman
Лучшим вариантом было бы использовать подготовленные операторы, чтобы содержать ошибочную или необоснованную предоставленную информацию от взлома вашей базы данных или допускать атаки на SQL-инъекции. – Orangepill