Enot_9913
@Enot_9913
недоделанный программист

Ошибка: Call to a member function fetch() on a non-object in C:\OSPanel\domains\localhost\rabotnik\sum\index.php on line 249?

Помогите найти ошибку в коде. Буду очень благодарна.

--------------------------
файл sum.html.php
<table border="1" width="100%" cellpadding="5">
          <tr>
            <td align="center">Класс</td>
            <td align="center">Тариф</td>
            <td align="center">Откуда</td>
            <td align="center">Куда</td>
            <td align="center">Цена</td>
            <td align="center">Действия</td>
                      </tr>
          <?php foreach($prod as $pro):  ?>
            <tr>
              <td><?php echo htmlout($pro['grade_name']); ?></td>
              <td><?php echo htmlout($pro['rate_name']); ?></td>
              <td><?php echo htmlout($pro['an1']); ?></td>
              <td><?php echo htmlout($pro['an2']); ?></td>
              <td><?php echo htmlout($pro['price']); ?></td>
              <td>
                <form action="?" method="POST">
                  <div>
                    <input type="hidden" name="id_sum" value="<?php htmlout($pro['id_sum']); ?>">
                    <input type="submit" name="action" value="Редактировать">
                    <input type="submit" name="action" value="Удалить">
                  </div>
                </form>
              </td>
            </tr>
          <?php endforeach; ?>
        </table>


----------------------
файл index.php
<?php
//Добавление
if (isset($_GET['add'])) {
	include $_SERVER['DOCUMENT_ROOT'].'/includes/connect_db.php';
	try {
		$query = 'SELECT id_grade, grade_name FROM grade';
		$result = $pdo->query($query);
	}
	catch (PDOException $e) {
		echo "Ошибка выполнения запроса: ".$e->getMessage();
		include 'error.php';
		exit();
	}
	while ($row = $result->fetch()) {
		$dols[] = array(
			'id_grade' => $row['id_grade'], 
			'grade_name' => $row['grade_name']);
	}

	try {
		$query = 'SELECT id_rate, rate_name FROM rate';
		$result = $pdo->query($query);
	}
	catch (PDOException $e) {
		echo "Ошибка выполнения запроса: ".$e->getMessage();
		include 'error.php';
		exit();
	}
	while ($row = $result->fetch()) {
		$dols2[] = array(
			'id_rate' => $row['id_rate'], 
			'rate_name' => $row['rate_name']);
	}

	try {
		$query = 'SELECT id_airport, airport_name FROM airport';
		$result = $pdo->query($query);
	}
	catch (PDOException $e) {
		echo "Ошибка выполнения запроса: ".$e->getMessage();
		include 'error.php';
		exit();
	}
	while ($row = $result->fetch()) {
		$dols3[] = array(
			'id_airport' => $row['id_airport'], 
			'airport_name' => $row['airport_name']);
	}
	
	try {
		$query = 'SELECT id_airport, airport_name FROM airport';
		$result = $pdo->query($query);
	}
	catch (PDOException $e) {
		echo "Ошибка выполнения запроса: ".$e->getMessage();
		include 'error.php';
		exit();
	}
	while ($row = $result->fetch()) {
		$dols4[] = array(
			'id_airport' => $row['id_airport'], 
			'airport_name' => $row['airport_name']);
	}
	$pageTitle = 'Новая запись расчета стоимости';
	$action = 'addform';
	$id_sum = '';
	$id_grade = '';
	$id_rate = '';
	$whence = '';
	$sum_where = '';
	$price = '';
	$button = 'Добавить';
	include 'form.html.php';
	exit();
}
if (isset($_GET['addform'])) {
	include $_SERVER['DOCUMENT_ROOT'].'/includes/connect_db.php';
	try {
		$sql = 'INSERT INTO sum SET
		id_grade = :id_grade,
		id_rate = :id_rate,
		whence = :whence,
		sum_where = :sum_where,
		price = :price';
		$s = $pdo-> prepare($sql);
		$s->bindValue(':id_grade', $_POST['id_grade']);
		$s->bindValue(':id_rate', $_POST['id_rate']);
		$s->bindValue(':whence', $_POST['whence']);
		$s->bindValue(':sum_where', $_POST['sum_where']);
		$s->bindValue(':price', $_POST['price']);
		$s->execute();
	}
	catch (PDOException $e) {
		$error = 'Ошибка при добавлении';
		include 'error.php';
		exit();
	}
	header('Location: .');
	exit();
}
//Редактирование 
if(isset($_POST['action']) and $_POST['action'] == 'Редактировать') {
	include $_SERVER['DOCUMENT_ROOT'].'/includes/connect_db.php';
	try {
		$sql = 'SELECT id_sum, id_grade, id_rate, whence, sum_where, price FROM sum 
		WHERE id_sum = :id_sum';
		$s = $pdo->prepare($sql);
		$s->bindValue(':id_sum', $_POST['id_sum']);
		$s->execute();
	}
	catch (PDOException $e) {
		$error = 'Ошибка при извлечении информации о стоимости.';
		include 'error.php';
		exit();
	}
	include $_SERVER['DOCUMENT_ROOT'].'/includes/connect_db.php';
	try {
		$query = 'SELECT id_grade, grade_name FROM grade';
		$result = $pdo->query($query);
	}
	catch (PDOException $e) {
		echo "Ошибка выполнения запроса: ".$e->getMessage();
		include 'error.php';
		exit();
	}
	while ($row = $result->fetch()) {
		$dols[] = array(
			'id_grade' => $row['id_grade'], 
			'grade_name' => $row['grade_name']);
	}

	try {
		$query = 'SELECT id_rate, rate_name FROM rate';
		$result = $pdo->query($query);
	}
	catch (PDOException $e) {
		echo "Ошибка выполнения запроса: ".$e->getMessage();
		include 'error.php';
		exit();
	}
	while ($row = $result->fetch()) {
		$dols2[] = array(
			'id_rate' => $row['id_rate'], 
			'rate_name' => $row['rate_name']);
	}

	try {
		$query = 'SELECT id_airport, airport_name FROM airport';
		$result = $pdo->query($query);
	}
	catch (PDOException $e) {
		echo "Ошибка выполнения запроса: ".$e->getMessage();
		include 'error.php';
		exit();
	}
	while ($row = $result->fetch()) {
		$dols3[] = array(
			'id_airport' => $row['id_airport'], 
			'airport_name' => $row['airport_name']);
	}
	
	try {
		$query = 'SELECT id_airport, airport_name FROM airport';
		$result = $pdo->query($query);
	}
	catch (PDOException $e) {
		echo "Ошибка выполнения запроса: ".$e->getMessage();
		include 'error.php';
		exit();
	}
	while ($row = $result->fetch()) {
		$dols4[] = array(
			'id_airport' => $row['id_airport'], 
			'airport_name' => $row['airport_name']);
	}
	$row = $s->fetch();
	$pageTitle = 'Редактировать информацию о стоимости';
	$action = 'editform';
	$id_sum = $row['id_sum'];
	$id_grade = $row['id_grade'];
	$id_rate = $row['id_rate'];
	$whence = $row['whence'];
	$sum_where = $row['sum_where'];
	$price = $row['price'];
	$button = 'Обновить информацию о стоимости';
	include 'form.html.php';
	exit();
}
if (isset($_GET['editform'])) {
	include $_SERVER['DOCUMENT_ROOT'].'/includes/connect_db.php';
	try {
		$sql = 'UPDATE sum SET
		id_sum = :id_sum,
		id_grade = :grade_name,
		id_rate = :rate_name,
		whence = :id_airport,
		sum_where = :id_airport2,
		price = :price
		WHERE id_sum = :id_sum';
		$s = $pdo->prepare($sql);
		$s->bindValue(':id_sum', $_POST['id_sum']); 
		$s->bindValue(':id_grade', $_POST['id_grade']);
		$s->bindValue(':id_rate', $_POST['id_rate']);
		$s->bindValue(':id_airport', $_POST['id_airport']);
		$s->bindValue(':id_airport2', $_POST['id_airport2']);
		$s->bindValue(':price', $_POST['price']);
		$s->execute();
	}
	catch (PDOException $e) {
		$error = 'Ошибка при обновлении записи о стоимости.';
		include 'error.php';
		exit();
	}
	header('Location: .');
	exit();
}
//Удаление 
if (isset($_POST['action']) and $_POST['action'] == 'Удалить') {
	include $_SERVER['DOCUMENT_ROOT'].'/includes/connect_db.php';
	try {
		$sql = 'DELETE FROM sum WHERE id_sum = :id_sum';
		$s = $pdo->prepare($sql);
		$s->bindValue(':id_sum', $_POST['id_sum']);
		$s->execute();
	}
	catch(PDOException $e) {
		$error = 'Ошибка при удалении стоимости.';
		include 'error.php';
		exit();
	}
	header('Location: .');
	exit();
}
//Вывод
include $_SERVER['DOCUMENT_ROOT'].'/includes/connect_db.php';
try {
	$query = 'SELECT id_sum, grade_name, rate_name, a1.airport_name as an1, a2.airport_name as an2, price FROM sum 
	INNER JOIN grade ON grade.id_grade = sum.id_grade 
	INNER JOIN rate ON rate.id_rate = sum.id_rate 
	INNER JOIN airport as a1 ON a1.id_airport = schedule.whence 
	INNER JOIN airport as a2 ON a2.id_airport = schedule.swhere';
	$result = $pdo->query($query);
}
catch (PDOException $e) {
	echo "Ошибка выполнения запроса: ".$e->getMessage();
	include 'error.php';
	exit();
}
while ($row = $result->fetch()) {
	$prod[] = array(
		'id_sum' => $row['id_sum'], 
		'grade_name' => $row['grade_name'],
		'rate_name' => $row['rate_name'],
		'an1' => $row['an1'],
		'an2' => $row['an2'],
		'price' => $row['price']);
}
include 'sum.html.php';
?>
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 2
DarkRaven
@DarkRaven
разработка программного обеспечения
Как верно объяснили в комментарии, в строке 242 переменная $result скорее всего равна false.

Я бы порекомендовал обратить внимание на вот этот метод: php.net/manual/ru/pdostatement.errorinfo.php
Т.е., если не происходит выброса исключения, но в результате есть false, можно попробовать через него понять, а что же случилось на самом деле.
Ответ написан
Комментировать
Enot_9913
@Enot_9913 Автор вопроса
недоделанный программист
Спасибо за отклики, нашла ошибку.
Человеческий фактор и опечатка в названии таблицы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы