prepared statements Mysqli не работает запрос

192
23 сентября 2018, 11:30

Что то типа такого и не работает код , почему ?

<?php 
$db->set_charset('utf8');
if (isset($_POST['submitted'])) 
{
    $name = $db->real_escape_string(htmlspecialchars($_POST['name']));
    $email = $db->real_escape_string(htmlspecialchars($_POST['email']));
    $comment = $db->real_escape_string(htmlspecialchars($_POST['comment']));
    date_default_timezone_set('Europe/Moscow');
    $currentTime = time();
    $dateTime = strftime('%B-%d-%Y %H:%M:%S', $currentTime);
    $dateTime;
    $post_id = $_GET['id'];
    if (empty($name) || empty($email) || empty($comment)) 
    {
        $_SESSION['ErrorMessage'] = "Заполните все поля";
            Redirect_to("fullpost/{$post_id}");
        exit;
    }
    if (strlen($comment)>500) 
    {
        $_SESSION['ErrorMessage'] = "only 500 characters allowed in Comment";
        Redirect_to("fullpost/{$post_id}");
    }
    else 
    {
        global $db;

        $stmt = $db->prepare('INSERT INTO comments (datetime, name,email,comment,approvedby,status,admin_panel_id) VALUES (?,?,?,?,?,?,?)');
        $stmt->bind_param('ssssssi',$dateTime, $name, $email, $comment,'pending', 'ON',$post_id);
        $stmt->execute();
        if ($stmt->affected_rows === 1)
        {
        $_SESSION['SuccessMessage'] = "Комментарий  отправлен";
        Redirect_to("fullpost/{$post_id}");
        }
        if ($stmt->affected_rows === 0)
        {
        $_SESSION['ErrorMessage'] = "fail.";
        Redirect_to("fullpost/{$post_id}");
        }
        if ($stmt->affected_rows === -1)
        {
        $_SESSION['ErrorMessage'] = "fail.";
        Redirect_to("fullpost/{$post_id}");
        }
    }

}
 ?>

<form action="/fullpost.php?id=<?php echo $post_id ?>  " method="post" enctype="multipart/form-data">
Name: <input type="text" name="name"><br>
Email: <input type="email" name="email"><br>
Comment:<br>
<textarea name="comment" ></textarea><br>
<input type="submit" name="submitted">

И короче оно отправляет форму эту и я оказываюсь на fullpost.php?id=111 и пустой экран(белый) а должно на fullpost/111 и отправится комментарий

Answer 1

Что то типа такого и не работает код , почему ?

$post_id = $_GET['id']; - это строка, а в bind_param('ssssssi' указано, что это integer.

Надо поменять на:

$post_id = (int)$_GET['id'];

или

$post_id = intval($_GET['id']);

P.S.: Про микс $_POST и $_GET для передачи post_id лучше использовать скрытые поля:

aka

<input type="hidden" value="<?php echo $post_id; ?>" id="..." name="id"/>

и тогда на стороне "сервера":

$post_id = intval($_POST['id']);
READ ALSO
Ошибка 404 при отправки запроса в Unity

Ошибка 404 при отправки запроса в Unity

При отправке запроса на сервер вылезает ошибка 404 Not Found в консоли UnityЧерез браузер все отлично работает

166
Dadata.ru API возвращает неполные данные

Dadata.ru API возвращает неполные данные

кто работал с API dadataru? Столкнулся со следующей проблемой, имеется PHP код:

188
PHP Word работа с таблицей

PHP Word работа с таблицей

Подскажите как при работа с PHP Word заполнить таблицу, а именно к примеру у нас есть таблица с 1-ой строкой, нам необходимо прочитать данные из бд циклом...

171