Как я могу решить эту проблему Страница не работает HTTP ERROR 500 - PullRequest
0 голосов
/ 23 января 2020

Как я могу решить эту проблему? Я пытаюсь получить записи из базы данных, используя подготовленное заявление. Это работает на локальном хосте, но не на онлайн-хостинге.

дБ. php

<?php
class Db {
private $host = "localhost";
private $user = "guru77";
private $pwd  = "123456";
private $dbName = "testingProjects";

protected function connect(){
    $dsn = 'mysql:host='.$this->host.';dbname='.$this->dbName;
    $pdo = new PDO($dsn,$this->user,$this->pwd);
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
    return $pdo;
}

}

post_view. php

<?php

class Post_view extends Post{

public function show(){
    $results = $this->showAll();
    return $results;
}

}

?>

post. php

<?php
class Post extends Db{


protected function  showAll(){
        $sql    = "SELECT * FROM posts";
        $stmt   = $this->connect()->query($sql);            
        $results = $stmt->fetchAll();
        return $results;
    }

}

?>

index. php

<?php
  require_once('db.php');
  require_once('post_view.php');
  require_once('post.php');

$obj = new Post_view();
  $rows = $obj->show();

    ?>

<html>
    <head>

    </head>
    <body>
        <?php foreach($rows as $row){

        echo $row['title'];

        }?>
    </body>
</html>

выход - enter image description here

Ответы [ 3 ]

1 голос
/ 23 января 2020

Внутренняя ошибка сервера 500 - это общая ошибка перехвата всех ошибок, когда сервер генерирует исключение. Проще говоря, 500 Internal Server Error - это общий код состояния http , который означает, что что-то пошло не так на сервере сайта.

Пожалуйста, проверьте следующее, проверьте, есть ли у вас служба онлайн-хостинга, учетные данные базы данных. одинаковы. (значения на переменных ниже.). Шланг может отличаться на онлайн-хосте от вашего локального хоста.

private $host = "localhost";
private $user = "guru77";
private $pwd  = "123456";
private $dbName = "testingProjects";

в качестве альтернативы, вы можете проверить соединение с базой данных, просто запустив это,

<?php

$hostname= "localhost";
$db= "database";
$user= "user";
$pass= "password";

$checkConn= new mysqli($hostname, $user, $pass, $db);
// Check connection
if ($checkConn->connect_error) {
   die("Connection failed: " . $checkConn->connect_error);
}
  echo "Connected successfully";

?>

, было бы более полезно, если бы вы можете получить данные журнала ошибок сервера, которые будут полезны при отладке

0 голосов
/ 23 января 2020

В вашей записи DNS пропущена точка с запятой:

$dsn = 'mysql:host='.$this->host.';dbname='.$this->dbName;

Должно быть так:

$dsn = '"mysql:host='.$this->host.';dbname='.$this->dbName . '"';

Надеюсь, это поможет.

0 голосов
/ 23 января 2020

Вы можете использовать

$pdo = new PDO('mysql: host=localhost; dbname12', 'myusername', 'password');
...