Напишите программу PHP, которая находит первые N простых чисел и записывает их в базу данных с двумя полями (идентификатор столбца и значение). Значение N вводится пользователем. Результатом должна быть страница, включающая таблицу с содержимым базы данных.
Массив с первыми n числами корректно отображается в первой строке, но Я, когда я пытаюсь вставить массив в базу данных, хранятся неправильные значения. Вместо сохранения и отображения значений «2», «3», «5», «7» в столбце «значение», , как вы можете видеть на рисунке , таблица состоит из значений « 2 'вместо фактических значений из массива. Есть предложения, что может быть не так?
Код на странице html:
<body>
<form id="form1" name="form1" method="post" action="nform.php">
<p>Finding the first n prime numbers</p>
<p>
<label>Enter a value for N:
<input name="n" type="text"">
</label>
<input type="submit" name="submit" value="Submit"/>
</p>
</form>
Код во внешнем файле php (nform. php):
<html>
<head>
<title>Table</title>
</head>
<body>
<?php
//Finding first n prime numbers:
function printPrimeNumbers($n){
$isPrime = true;
$num = 3;
$primeNumbers = array();
if($n >= 1){
$primeNumbers[] = 2;
}
if($n > 1){
for($i = 2; $i<=$n;){
for($j = 2; $j <= sqrt($num); $j++){
if($num % $j == 0){
$isPrime = false;
break;
}
}
if($isPrime) { //if $num is prime number
$primeNumbers[] = $num;
$i++;
}
$isPrime = true;
$num++;
}
}
return $primeNumbers;
}
$n = $_POST["n"];
$primeNum = printPrimeNumbers($n);
echo "First $n prime numbers are: ", implode(",", $primeNum)."<P>"; //array to string conversion
$primeNumStr = implode(",", $primeNum);
//Connecting to MySQL
$link = mysqli_connect("localhost", "root", "");
if (mysqli_connect_errno()){
die ("Failed to connect to MySQL: " . mysqli_connect_error());
}
$query = "SHOW DATABASES";
$result = mysqli_query($link, $query);
$db_selected = mysqli_select_db($link, 'p_numbers');
if(!$db_selected){
$query = "CREATE DATABASE p_numbers";
//Creating table 'numbers' with 2 fields
$query = "CREATE TABLE IF NOT EXISTS numbers(value_id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, value INT NOT NULL)";
if(mysqli_query($link, $query) == FALSE){
die(mysqli_error($link));
}
} else {
mysqli_select_db($link, 'p_numbers');
}
//Inserting user input values into table 'numbers'
$query = "INSERT INTO numbers(value) VALUES ('".$primeNumStr."')";
mysqli_query($link, $query);
if(mysqli_query($link, $query) == FALSE) {
die(mysqli_error($link));
} else {
print("Entered value has been successfully stored.");
}
mysqli_close($link);
?>
<p>Table of stored values:</p>
<table>
<tr>
<td>ID</td>
<td>Value</td>
</tr>
</table>
<!--Selecting stored values from table 'numbers' and inserting them into a HTML table-->
<?php $link = mysqli_connect("localhost", "root", "", "p_numbers");
if (mysqli_connect_errno()){
die ("Failed to connect to MySQL: " . mysqli_connect_error());
}
$query = mysqli_query($link, "SELECT * FROM numbers");
while($row = mysqli_fetch_row($query)){
echo $row[0]." ".$row[1]." "."<br/>";
}
mysqli_close($link);
?>
</body>
</html>