У меня есть сценарий, который должен отображать результаты запроса Postgres на основе ссылки, которую пользователь нажимает на предыдущую страницу.
Например, когда пользователь нажимает на заголовок проекта, он направляет их на страницу, которая показывает им больше атрибутов проекта, которые содержатся в столбцах в базе данных.
У меня уже есть страница, где пользователи могут щелкнуть по названию, но после того, как они нажмут заголовок, моя вторая страница, чтобы отобразить другие атрибуты проекта, не работает.
<?php ini_set('display_errors',1); error_reporting(E_ALL); $row = false; if (isset($_GET['pid']) && filter_var($_GET['pid'], FILTER_VALIDATE_INT, array('min_range' => 1)) ) { $pid = $_GET['pid']; require('/var/www/postgres_connect.php'); $q = 'SELECT * FROM public.' + "tblProjects" + 'WHERE ' + "tblProjects" + '.ProjectID = ' + "$pid"; $r = pg_query ($dbconn, $q); if (pg_num_rows($r) == 1) { $row = pg_fetch_assoc ($r); $page_title = $row['ProjectID']; echo "<div align=\"center\"> <b>{$row['ProjectID']}</b> by {$row['ProjectTitle']}<br />"; echo '<p align="center">' . ((is_null($row['totalcost'])) ? '(No Cost Recorded)' : $row['totalcost']) . '</p>'; } pg_close($dbconn); } if (!$row) { $page_title = 'Error'; echo '<div align="center">This page encountered an error!</div>'; } ?>
Запуск этого скрипта приводит к следующей ошибке:
Предупреждение: pg_query (): Ошибка запроса: ошибка ERROR: синтаксическая ошибка в или около "20131418" LINE 1: 20131418 ^ в /var/www/html/view_project.php в строке 13
Предупреждение: pg_num_rows () ожидает, что параметр 1 будет ресурсом, boolean задан в /var/www/html/view_project.php в строке 14
Теперь, я не думаю, что вторая ошибка является проблемой, потому что решение первой ошибки приведет к результату запроса, а затем очистит вторую ошибку.
Я не понимаю, что не так с синтаксисом; с $pid
в конце запроса возвращает целое число (20131418), которое вызывается как недопустимый синтаксис. Что я могу сделать для решения этой проблемы?