Я пытаюсь отобразить информацию из базы данных на html-странице, но отображается только сообщение «подключено успешно». Имя базы данных «admin», а таблица в этой базе данных называется «users». Я понятия не имею, как пройти мимо сообщения и просто отобразить созданную мной таблицу.
Индексная страница (index.php):
<?php
include_once('connection.php');
$query = "select * from users";
$result=mysql_query($query);
?>
<!DOCTYPE html>
<html>
<title>
<head> Fetch Data Frome Database</head>
</title>
<body>
<table align = "center" border = "1px" style = "width:250px; line-height: 30px;">
<tr>
<th colspan = "4"><h2>Account Record</h2></th>
</tr>
<t>
<th>ID</th>
<th>Username</th>
<th>Password</th>
</t>
<?php
while($rows=mysql_fetch_assoc($result))
{
?>
<tr>
<td><?php echo $rows['ID'];?></td>
<td><?php echo $rows['username'];?></td>
<td><?php echo $rows['password'];?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>
СТРАНИЦА ПОДКЛЮЧЕНИЯ (connection.php):
<?php
//Include your own values for username, password and dbase name
$host = "localhost";
$username = "root";
$password = "root";
$dbname = "admin";
// Create connection
$conn = new mysqli($host, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Спасибо. Хотя это помогло фактически отобразить таблицу на веб-странице, результаты из таблицы не были отображены. Я изменил запрос sql на sqli и цикл while на sqli. я ничего не пропустил, чтобы на самом деле отображать результаты?
<?php include_once('connection.php'); $query = "ВЫБЕРИТЕ * ОТ пользователей"; $result=mysqli_query($conn, "SELECT * FROM users"); ?>
Я изменил свою кодировку на указанную выше ^^^. Теперь отображается таблица, а также 3 слота для 3 наборов данных, которые у меня есть в базе данных. все еще не тянет его из базы данных
mysql_query, который был удален в PHP 7. Замена, такая как PDO не сложно изучить, и руководство, такое как PHP правильный путь, помогают объяснить лучшие практики. Здесь параметры НЕТправильно сбежал, и в этом коде есть серьезный Ошибки внедрения SQL. Экранируйте любой и все пользовательские данные, особенно из $_POST или $_GET.






Попробуйте поместить весь ваш PHP в один блок
<?php
include_once('connection.php');
$query = "select * from users";
$result=mysql_query($query);
while($rows=mysql_fetch_assoc($result))
{
echo "<tr>";
echo "<td>".$rows['ID']."</td>";
echo "<td>".$rows['username']."</td>";
echo "<td>".$rows['password']."</td>";
echo "</tr>";
}
?>
только что попробовал этот помощник и все тот же результат. Просто показывая таблицу и заголовки без информации о базе данных. Имена столбцов, которые я пытаюсь вызвать из базы данных, также совпадают. Не могу думать ни о чем другом.
Что вы получаете, когда используете var_dump или print_r $result? Давайте проверим, что данные действительно поступают.
жаль, что я никогда не пробовал это раньше. не могли бы вы объяснить, как это проверить?
просто var_dump($result); или print_r($результат);
Ах! Что ж, это указывает на то, что проблема должна заключаться в вашем соединении или вашем запросе, поскольку данные, похоже, не попадают на страницу.
хотя, когда я набираю "print_r($result);" он возвращает "1".
@Вы уверены, что у вас есть записи в базе данных?
да. локальный хост: 8889. Имя базы данных "admin". Имя таблицы — «пользователи». В базе данных есть 3 записи с "ID", "логином" и "паролем". Идентификатор является первичным ключом, и для него выбрано автоматическое увеличение.
могу я спросить, см. "$result=mysqli_query($query);" что обычно должно быть между скобками?
Первая проблема заключается в том, что ваш цикл while настроен неправильно. Оператор равенства передаст значение mysql_fetch_assoc($result) в $rows, так что это просто ничего не сделает. Просто подумайте, что один знак равенства не означает, что он действительно означает, что он становится равным. Таким образом, строки становятся результатом. Если у вас есть два знака равенства, вы сравниваете два значения, но это вам тоже не поможет. Что вам действительно нужно сделать, так это сначала установить строки на ноль, а затем сказать, что, пока строк меньше, чем результат, эхо, идентификатор, эхо, имя пользователя, эхо, пароль и добавить 1 к строкам.
Таким образом, цикл while должен выглядеть примерно так
$rows = 0;
while($rows < mysql_fetch_assoc($result) ){
$rows++
?>
<tr>
<td><?php echo $rows['ID'];?></td>
<td><?php echo $rows['username'];?></td>
<td><?php echo $rows['password'];?></td>
</tr>
<?php
}
}
Предполагая, что $result=mysql_query($query) действительно имеет значение, это должно работать.
Если вам нужно проверить, хорош ли ваш результат, используйте печать массива PHP для проверки print_r($result); Это выведет все результаты на экран.
Поэтому я предпочитаю использовать этот метод, так как он немного лучше, чем любой другой метод, который я пробовал. Кроме того, я вставляю соединение в класс, и это значительно упрощает работу с соединениями с базой данных.
Страница ПОДКЛЮЧЕНИЯ БД:
class Database
{
private $host = "localhost";
private $db_name = "root";
private $username = "root";
private $password = "admin";
public $conn;
public function dbConnection()
{
$this->conn = null;
try
{
$this->conn = new PDO("mysql:host = " . $this->host . ";dbname = " . $this->db_name, $this->username, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $exception)
{
echo "Connection error: " . $exception->getMessage();
}
return $this->conn;
}
}
Теперь я создаю класс для соединения. Обычно я называю его именем сайта.
require_once "db/config/page/location.php";
class localhost {
// Create conn to db
private $conn;
public function __construct()
{
$database = new Database();
$db = $database->dbConnection();
$this->conn = $db;
}
public function runQuery($sql)
{
$stmt = $this->conn->prepare($sql);
return $stmt;
}
}
Примечание: когда вы хотите использовать соединение на любой странице. Вы можете сделать следующее: Индексная страница EG:
<?php
include_once('class.php');
$lHost = new localhost();
//calling the users
$stmt = $lHost->runQuery('SELECT * FROM `users`');
$stmt->execute();
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html>
<title>
<head> Fetch Data Frome Database</head>
</title>
<body>
<table align = "center" border = "1px" style = "width:250px; line-height: 30px;">
<tr>
<th colspan = "4"><h2>Account Record</h2></th>
</tr>
<t>
<th>ID</th>
<th>Username</th>
<th>Password</th>
</t>
<?php
foreach ($users as $key => $user) {
?>
<tr>
<td><?php echo $user['ID'];?></td>
<td><?php echo $user['username'];?></td>
<td><?php echo $user['password'];?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>Не стесняйтесь задавать мне любые вопросы.
Попробуйте это в своем файле. Используйте этот файл в качестве первого для тестирования.
<html>
<head>
<title>Selecting Table in MySQLi Server</title>
</head>
<body>
<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '';
$dbname = 'admin';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
if (! $conn ) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully<br>';
$sql = 'SELECT name FROM tutorials_inf';
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "Name: " . $row["name"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
</body>
</html>
Примечание: Вы можете проверить наличие ошибок, используя mysqli_error()например, echo mysqli_error(); после выбранного запроса.
Вы подключились с помощью mysqli, но использовали mysql в запросе.