Witam serdecznie.
Potrzebuję pomocy z kodem odnośnie wysyłania danych do bazy SQL za pomocą pętli for i zmiennej w nazwie zmiennej.
Mam coś takiego i to nie działa:
for($j=1; $j<=15; $j++)
{
$sql = "INSERT INTO odpowiedzi (Odpowiedz)
VALUES ('${'zawartosc'.$i}[1]');";
}
Zmienna ${'zawartosc'.$i}[1] powstaje w skutku wykonywania się pętli:
for ($i=1; $i<=15; $i++)
{
$
{'plik'.$i}[1
] = fopen('pytanie_'.$i.'/odpowiedzi.txt','r'); $
{'zawartosc'.$i}[1
] = fread($
{'plik'.$i}[1
], 8192
); echo $
{'zawartosc'.$i}[1]. "<hr>";
if(${'zawartosc'.$i}[1]=="True")
{
$poprawne+=1;
}
else if(${'zawartosc'.$i}[1]=="False")
{
$bledne+=1;
}
}
echo 'Poprawne odpowiedzi: '.$poprawne.'<hr>'; echo 'Błędne odpowiedzi: '.$bledne.'<hr>';
Cały kod wygląda następująco:
<?php
$poprawne=0;
$bledne=0;
for ($i=1; $i<=15; $i++)
{
$
{'plik'.$i}[1
] = fopen('pytanie_'.$i.'/odpowiedzi.txt','r'); $
{'zawartosc'.$i}[1
] = fread($
{'plik'.$i}[1
], 8192
); echo $
{'zawartosc'.$i}[1]. "<hr>";
if(${'zawartosc'.$i}[1]=="True")
{
$poprawne+=1;
}
else if(${'zawartosc'.$i}[1]=="False")
{
$bledne+=1;
}
}
echo 'Poprawne odpowiedzi: '.$poprawne.'<hr>'; echo 'Błędne odpowiedzi: '.$bledne.'<hr>';
//Rozdzielenie części kodu
$imie = $_POST['imie'];
$nazwisko = $_POST['nazwisko'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "$imie$nazwisko";
$conn = new mysqli($servername, $username, $password);
if ($conn->connect_error) {
die("Nie udało się połączyć: " . $conn->connect_error); }
$sql = "CREATE DATABASE $imie$nazwisko";
if ($conn->query($sql) === TRUE)
{
echo "Baza danych utworzona pomyślnie"; }
else
{
echo "Błąd tworzenia bazy danych: " . $conn->error; }
$conn->close();
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error)
{
die("Nie udało się połączyć: " . $conn->connect_error); }
$sql = "CREATE TABLE odpowiedzi(id INT(2) UNSIGNED AUTO_INCREMENT PRIMARY KEY, Odpowiedz VARCHAR(50))";
if ($conn->query($sql) === TRUE)
{
echo "<br> Tabela utworzona poprawnie"; }
else
{
echo "<br> Błąd tworzenia tabeli: " . $conn->error; }
$conn->close();
//Rozdzielenie części kodu
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error)
{
die("Nie udało się połączyć: " . $conn->connect_error); }
for($j=1; $j<=15; $j++)
{
$sql = "INSERT INTO odpowiedzi (Odpowiedz)
VALUES ('${'zawartosc'.$i}[1]');";
}
if ($conn->multi_query($sql) === TRUE)
{
echo "<br> Nowe rekordy utworzone pomyślnie"; }
else
{
echo "<br> Błąd: " . $sql . "<br>" . $conn->error; }
$conn->close();
?>
Jest to tylko jedna z wielu podstron testu, w którym pytania i odpowiedzi są wyświetlane w losowej kolejności, wszystko działa, za wyjątkiem nieszczęsnego wysyłania danych do bazy SQL, gdyż w obecnej formie wymagało by to użycia cudzysłowu, w nim apostrofu i jeszcze trzeciego znaku o tej właściwości, ale takiego nie ma, bądź go nie znam. Proszę o pomoc.