#php #html #mysql
#php #HTML #mysql
Вопрос:
Файл Mysql:
<?php
function query($sql, $array) {
$servername = "localhost";
$username = "verifyUser";
$password = "test";
$dbname = "verify";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$result = $conn->query($sql);
$stack = array();
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
array_push($stack, $row);
if(!$array) {
return $row;
}
}
return $stack;
}
$conn->close();
}
?>
Мой php-файл:
<table>
<tr>
<th>Id</th>
<th>Name</th>
<th>Serial</th>
</tr>
<?php
include_once("mysql.php");
$result = query("SELECT ProductId, Name, SerialId FROM product", true);
while ($row = mysqli_query($result)) {
echo "<tr><td>" . $row['ProductId'] . "</td><td>" . $row['Name'] . "</td><td>" . $row['SerialId'] . "</td></tr>";
}
?>
</table>
Вывод:
Id Name Serial
Это мой первый день, когда я пытаюсь что-либо сделать с php. Так что полегче со мной 🙂
Я следовал различным руководствам и просматривал документацию по php, но я не смог заставить свою таблицу печатать что-либо, кроме заголовков таблицы.
Я не думаю, что мой запрос неверен, потому что я возвращаю результаты в workbench
https://gyazo.com/ab588fa7b7498444a5e8dcd1b172f315
Комментарии:
1. Здравствуйте, добро пожаловать в Stack Overflow. Прежде всего, спасибо за погружение и попытку освоить ценный новый навык! Я думаю, что вы здесь на правильном пути, хотя, как вы признаете, вы не совсем там. У меня есть один первоначальный вопрос, почему у вас здесь два отдельных файла? ИМХО, я думаю, их можно легко объединить в одну.
2. Другая проблема, которую я вижу сразу, находится в вашем нижнем php-файле, вы пытаетесь использовать sql-запрос для заполнения таблицы, который не будет работать, пока ($ row = mysqli_query($ result)) { echo «<tr><td>» . $row[‘ProductID’] . «</td><td>» . $row[‘Name’] . «</td><td>» . $row[‘SerialId’] . «</td></tr>»; } Я думаю, вам нужно использовать данные в $ stack здесь.
3. Я использовал два отдельных файла, чтобы попытаться повторно использовать как можно больше кода. По крайней мере, такова была моя логика. Каков наилучший способ получить данные $ stack?
4. Смотрите мой ответ ниже, он должен, по крайней мере, направить вас в правильном направлении. Кроме того, проведите некоторое исследование метода foreach() в PHP, он выполняет итерации по массиву. Это должно помочь вам начать. Немного поиграйте с ней, и если у вас возникнут какие-либо дополнительные вопросы, дайте мне знать.
5. Кроме того, пока вы еще молоды и впечатлительны в этой области, проведите некоторое исследование PDO и SQL-инъекций. На самом деле было обнаружено, что используемый вами метод запроса к БД (Mysqli) довольно небезопасен, сегодня лучше использовать PDO.
Ответ №1:
<?php
$table='<table>
<tr>
<th>Id</th>
<th>Name</th>
<th>Serial</th>
</tr>';
$servername = "localhost";
$username = "";
$password = "";
$dbname = "verify";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$result = $conn->query($sql);
$stack = array();
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
array_push($stack, $row);
if(!$array) {
return $row;
}
}
}
$conn->close();
$table_content='';
foreach($stack as $item)
{
$table_content.= "<tr>
<td>" . $row['ProductId'] . "</td>
<td>" . $row['Name'] . " </td>.
<td>" . $row['SerialId'] . "</td>
</tr>";
}
echo $table.$table_content.'</table>';
?>
Ответ №2:
<table>
<tr>
<th>Id</th>
<th>Name</th>
<th>Serial</th>
</tr>
<?php
$servername = "localhost";
$username = "";
$password = "";
$dbname = "verify";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$result = $conn->query($sql);
$stack = array();
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
array_push($stack, $row);
if(!$array) {
return $row;
}
}
}
$conn->close();
foreach($stack as $item)
{
echo "<tr><td>" . $row['ProductId'] . "</td><td>" . $row['Name'] . "</td>. <td>" . $row['SerialId'] . "</td></tr>";
}
?>
Комментарии:
1. Спасибо вам за всю помощь на данный момент. К сожалению, я все еще получаю тот же результат, который был у меня изначально.