如何修复此准备好的语句

时间:2019-05-14 02:16:59

标签: php mysql

自1个小时以来,我一直遇到问题,不知道解决方案在哪里。 我做了一个准备好的语句,将表单中的元素插入到BDD中,但我不知道是什么问题,这是“执行”之前的问题,因为当我提交mi表单时,我会转到“其他”。

我的尝试捕获看起来像:

try
{
    $db = new PDO('mysql:host=localhost;dbname=lucilledrx928', 'root', 'root');
}
catch (Exception $e)
{
    echo 'Erreur : ' . $e->getMessage();
    die();
}

我准备好的声明:

if (isset($_POST['titre'])) {
    $query = $db->prepare('INSERT INTO news(user_id, titre, sous_titre, date, commentaire) VALUES (?, ?, ?, ?, ?)');
    if ($query->execute(array(
        strip_tags($_POST['user_id']),
        strip_tags($_POST['titre']),
        strip_tags($_POST['sous_titre']),
        strip_tags($_POST['date']),
        strip_tags($_POST['commentaire']),
    ))) {
        $_SESSION['msg'] = "Votre news a été créer";
        header('location: add_news.php');
    } else {
        $_SESSION['error_msg'] = 'Erreur lors de l\'upload à la base de donnée';
    };
}

和我的表格:

<h2>Ajoutez une News</h2>
<?php
echo '<form style="min-width: 500px;" action="' . SITE_URL . '/admin/add_news.php" method="post" enctype="multipart/form-data">';
?>
    <p>Titre de l'article: <input type="text" name="titre"/></p>
    <p>Sous titre de l'article: <input type="text" name="sous_titre"/></p>
    <p>Les Models:
        <select name="user_id">
            <?php
            foreach ($users as $user) {
                echo '<option value="' . $user['id'] . '">' . $user['name'] . '</option>';
            }
            ?>
        </select>
    </p>
    <p>Commentaire: <br/><textarea name="commentaire" rows="5" cols="45"></textarea></p>
    <p>Selection de Photo: <input type="text" id="member" name="member"
                                  placeholder="Choisir le nombre d'image"><br/>
        <a id="filldetails" onclick="addFields()" style="cursor: pointer">Valider le nombre de photo</a>
    <div id="addField"></div>
    <p><input type="hidden" name="MAX_FILE_SIZE" value="10000000"></p>
    <p><input hidden value="<?php $date->format('Y-m-d') ?>" name="date"><br></p>
    <p><input type="submit" value="Envoyer"></p>
</form>

1 个答案:

答案 0 :(得分:0)

我知道这不是OP想要的,但是您是否尝试过以其他方式构造它。 您可以尝试以下方法:

if (isset($_POST['titre'])&& !empty($_POST['titre']){

$query = $db->prepare("INSERT INTO news (user_id, titre, sous_titre, date, commentaire) VALUES (:user_id, :titre, :sous_titre, :sous_titre, :date, :commentaire ) ");
    $query->bindParam(':user_id', $_POST['user_id'], PDO::PARAM_STR);
    $query->bindParam(':titre', $_POST['titre'], PDO::PARAM_STR);
    $query->bindParam(':sous_titre', $_POST['sous_titre'], PDO::PARAM_STR);
    $query->bindParam(':date', $_POST['date'], PDO::PARAM_STR);
    $query->bindParam(':commentaire', $_POST['commentaire'], PDO::PARAM_STR);
    $res = $insertNews->execute();

if($res){
$_SESSION['msg'] = "Votre news a été créer";
        header('location: add_news.php');
} else {
$_SESSION['error_msg'] = 'Erreur lors de l\'upload à la base de donnée';
}
}