У меня есть HTML-код, который создает шаблон для сбора 5 переменных. Эти переменные отправляются на php, которые обрабатывают информацию и пересылают ее в базу данных mySQL.Почему PHP вставляет несколько строк в MySQL из одной записи?
Ниже приводится шаблон HTML:
<html>
<head>
</head>
<body>
<form action="insert.php" method="post">
<p>Value1 <input type="text" name="value1" /></p>
<p>Value2 <input type="text" name="value2" /></p>
<p>Value3 <input type="text" name="value3" /></p>
<p>Value4 <input type="text" name="value4" /></p>
<p>Value5 <input type="text" name="value5" /></p>
<input type="Submit" />
</form>
</body>
</html>
А вот PHP форма, которая взаимодействует с MySQL (обратите внимание, что # заменяются фактическими значениями в первоначальном виде):
<?php
$server="#####";
$username="#####";
$password="######";
$database="#####";
$val1=$_POST['value1'];
$val2=$_POST['value2'];
$val3=$_POST['value3'];
$val4=$_POST['value4'];
$val5=$_POST['value5'];
$con = new mysqli($server,$username,$password,$database);
//Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql= "INSERT INTO test_table (value1, value2, value3, value4, value5) VALUES ('$val1','$val2','$val3','$val4','$val5')";
if (mysqli_query($con, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($con);
}
mysqli_close($con);
?>
Кажется, что две формы работают нормально, и ошибок нет. Проблема в том, что когда я переключаюсь на приглашение mysql и допрашиваю базу данных, чтобы увидеть, работает ли она, она показывает несколько строк ввода, а не только одну. Я довольно уверен, что проблема не связана с таблицей базы данных, которая была ранее создана. На всякий случай я отправляю код, который я использовал для создания таблицы.
mysql> create table test_table (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
value1 VARCHAR(10),
value2 VARCHAR(10),
value3 VARCHAR(10),
value4 VARCHAR(10),
value5 VARCHAR(10))
;
Так, например, если я загрузить форму HTML и вставить «а» «б» «С» «D» и «е» в полях вывод должен быть только 1 запись в MySQL. Вместо этого я получаю два. (Я не могу опубликовать изображение вывода, потому что у меня недостаточно опыта). Я пытался это исправить, но я не мог найти, где проблема. Любая помощь очень ценится.
Вы тестируете локальный сервер (localhost) или нет? Можете ли вы обновить свой вопрос с помощью запроса, чтобы узнать, как вы запрашиваете базу данных (подсчет строк) ... Купите путь, нет двух форм ... В вашем примере есть одна форма html и один php-скрипт;) – Whirlwind
I запустил ваш код, и он функционирует так, как предполагается. Даже если вы не можете опубликовать изображение, можете ли вы ввести свой вопрос, что содержат эти несколько записей? – BigScar
Я бы предположил, что ваш PHP работает дважды, может быть, потому, что у вас есть дополнительный 'include'? – EternalHour