Как получить $_GET параметр?

159
12 февраля 2022, 16:00

Есть 2 запроса, один вставляет добавляет комментарий к записям, другой выводит их, каждой записи свои комменты

Запрос добавления коммента:

$sql = 'INSERT INTO comments(name, comment, post_id) VALUES (:name, :comment, :post_id)';
$sqlParams = [':name' => $_POST['name'], ':comment' => $_POST['comment'], ':post_id' => $_GET['id']];

Ну и вывод:

$sql = 'SELECT * FROM comments WHERE post_id = :id';
$sqlParams = [':id' => $_GET['id']];

Проблема в том, что у меня не получается в первом запросе, в :post_id присвоить значение $_GET['id']. Сделал var_dump($_GET['id']) получил стринг, а post_id в таблице int, сделал жесткое преобразование ':post_id' => (int)$_GET['id'], в итоге вместо ожидаемого параметра $_GET['id'] допустим 500, я все время получаю 0

Answer 1

Вы пытаетесь в POST запросе получить GET переменную. Так делать не стоит. Запрос надо делать либо POST, либо GET.

Замените $_GET на $_POST переменную.

Скорее всего у вас есть некая форма или AJAX скрипт на js (JQuery), который отправляет данные:

':name' => $_POST['name'], ':comment' => $_POST['comment']

Добавьте к ним ещё и id полученный из $_GET['id'], тогда вы спокойно будете использовать строку:

$sqlParams = [':name' => $_POST['name'], ':comment' => $_POST['comment'], ':post_id' => $_POST['id']];

Сделать это можно либо добавив в форму

<input type="hidden" name="id" value="<?php echo $_GET['id'] ?>" >

Либо в data $.ajax получив предварительно значение из URL.

READ ALSO
Как перебрать массив из JSON Объектов? php, laravel

Как перебрать массив из JSON Объектов? php, laravel

Опишу подробнее - делаю галерею с загрузкой нескольких изображений на Laravel - у меня в таблице с товарами есть поле - file, в котором я записываю...

132
Не могу настроить php окружение

Не могу настроить php окружение

Ребят, я сразу признаюсь я чайник, я верстальщик, хочу разобраться как мне сделать загрузку php файлов локально, я делаю корпоративный сайт,...

152
symfony или slim framework

symfony или slim framework

На php разрабатываю более 7 летГотовые фреймворки никогда не использовал, за исключением отдельных компонентов (или библиотек monolog, guzzlehttp и т

123
PHP CLI на Windows 10 не срабатывает max_execution_time

PHP CLI на Windows 10 не срабатывает max_execution_time

Столкнулся с проблемой: на Windows 10, не срабатывает max_execution_time для PHP CLI (любых версий, но на данный момент работаю с 56)

80