У меня есть эта проблема, которая в последнее время меня сбивает с ума, когда всякий раз, когда я пытаюсь запросить базу данных, я всегда получаю пустой результат!
Пожалуйста, помогите, и я здесь для получения дополнительной информации или деталей.
Это класс базы данных:
final class database
{
private const DB_HOST = 'localhost';
private const DB_NAME = 'branches';
private const DB_CHARSET = 'utf8';
private const DB_USER = 'public_user';
private const DB_PASS = '1y37*V9ddGd@';
public const EMAIL_TO = '[email protected]';
public static function database_connect()
{
// setting DSN (Data Source Name)
$dsn = 'mysql:host=' . self::DB_HOST . ';' . 'charset=' . self::DB_CHARSET;
try {
// creating a PDO (PHP Data Object) instance
$pdo = new PDO($dsn, self::DB_USER, self::DB_PASS);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
return $pdo;
} catch (PDOException $e) {
if (DEBUG === true) {
echo "<pre><br><var>";
print_r('An error has occured during database connection initiation Big Boss: <br> ' . $e);
echo "</var></pre><br>";
} else {
$headers = "From: [email protected]" . "\r\n";
$headers .= "Reply-To: No One" . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
if (mail(self::EMAIL_TO, 'An error has occured', $e, $headers)) {
echo 'المعذرة حدث خطاء فادح! لقد تم إرسال الخطاء إلى مطور الموقع لمعالجتة.';
} else {
echo 'الرجاء التواصل مع مدير موقع شركة الجزيرة إخوان للصرافة على الإيميل التالي: <br>
[email protected]';
}
}
}
}
private function __clone() {}
}
и так я запрашиваю базу данных с индексной страницы:
<?php
$connection = Database::database_connect();
$select_database = "use branches";
Database::database_query($connection, $select_database);
$get_all_branches_query = "SELECT * FROM jazz_branches_ar WHERE branch_status = 1";
$query_results = Database::database_query($connection, $get_all_branches_query);
foreach ($query_results as $branch) {
echo "<tr>";
echo "<td>", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_fax'])))) , "</td>";
echo "<td><a class=\"inline-links\" href=\"tel:", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_tel'])))), "\">", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_tel'])))) ,"</a></td>";
echo "<td>", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_address'])))), "</td>";
echo "<td>", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_city'])))), "</td>";
echo "</tr>";
}
?>
Заметки:
это мой старый класс базы данных, и, как вы могли видеть, это отрицает меры безопасности всех видов:
class Database
{
private static $_db_host = 'mysql:host=localhost;charset=utf8';
private static $_db_user = 'jazz_god';
private static $_db_pass = 'LcaQVNH3qz6Cksow';
public static function database_connect()
{
return $db_info = new PDO(Database::$_db_host, Database::$_db_user, Database::$_db_pass);
}
public static function database_query($db_connection, $query)
{
$statment = $db_connection->prepare($query);
$statment->execute();
$result = $statment->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
}
и это код, используемый для запроса базы данных:
<?php
$connection = Database::database_connect();
$select_database = $connection->prepare('use jazz_agents_branches');
$select_database->execute();
$get_all_branches_query = "SELECT * FROM jazz_branches_ar WHERE branch_status = 1";
$query_results = Database::database_query($connection, $get_all_branches_query);
foreach ($query_results as $branch) {
echo "<tr>";
echo "<td>", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_fax'])))) , "</td>";
echo "<td><a class=\"inline-links\" href=\"tel:", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_tel'])))), "\">", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_tel'])))) ,"</a></td>";
echo "<td>", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_address'])))), "</td>";
echo "<td>", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_city'])))), "</td>";
echo "</tr>";
}
?>
И хотя я подвергал свое приложение риску, я решил включить список библиотек и версию php, которые я использую ниже:
Просто поставьте это:
$dsn = 'mysql:host=' . self::DB_HOST . ';' . 'charset=' . self::DB_CHARSET;
и на попытке:
$connection = database::database_connect();
$select_database = $connection->prepare('use branches');
$select_database->execute();
Ваш код должен быть:
<?php
$connection = Database::database_connect();
$select_database = "use branches";
Database::database_query($connection, $select_database);
$get_all_branches_query = "SELECT * FROM jazz_branches_ar WHERE branch_status = 1";
$query_results = Database::database_query($connection, $get_all_branches_query);
foreach ($query_results as $branch) {
echo "<tr>";
echo "<td>", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_fax'])))) , "</td>";
echo "<td><a class=\"inline-links\" href=\"tel:", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_tel'])))), "\">", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_tel'])))) ,"</a></td>";
echo "<td>", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_address'])))), "</td>";
echo "<td>", htmlspecialchars(strip_tags(stripslashes(trim($branch['branch_city'])))), "</td>";
echo "</tr>";
}
?>
И ошибка электронной почты на вашем классе изменяет электронную почту для общественности, вы не можете получить доступ к частной собственности класса:
public const EMAIL_TO = '[email protected]';
Fatal error: Uncaught Error: Cannot access private const database::EMAIL_TO in /home/public/index.php:157 Stack trace: #0 {main} thrown in /home/public/index.php on line 157
An error has occured during database retrival Big Boss: PDOException: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected in /home/public/index.php:134 Stack trace: #0 /home/public/index.php(134): PDOStatement->execute(Array) #1 {main}