0

それで、私は最近PHPの学習を始めましたが、今はデータベースにコードを取り込もうとしています。データはフォームを通じてユーザーから入力されます。

ここに私のコードがあります:

if(isset($_POST['submit'])) {

    $blogtitle = $_POST['blogTitle'];
    $blogcategory = $_POST['blogCategory'];
    $blogcontent = $_POST['blogContent'];
    // aanmaak date van de blog
    $blogdate = date("d/m.Y"); 

    // Checkt of alle velden zijn ingevuld
    if (!empty($blogtitle) && !empty($blogcategory) && !empty($blogcontent)) {

        //echo "je zit nu bij de query";

        $addBlogQuery = mysql_query("INSERT INTO blog (blog_ID, blog_title, blog_category, blog_content, blog_date)
                                     VALUES (NULL, $blogtitle, $blogcategory, $blogcontent, blogdate )");

        if ($addBlogQuery) {
            echo "blog added successfully";
        }
        else {
            echo "something went wrong";
        }
    }
    else {
        $this->notFilledErrorAction();
    }

}

何らかの理由で、データベースにデータを追加していません。データベースへの接続は正常に機能しており、クエリに誤りはありません。

このコードにエラーが表示されますか? または私が問題を理解するのを助けることができますか?

4

7 に答える 7

3

INSERTステートメントに構文エラーがあります:

    $addBlogQuery = mysql_query("INSERT INTO blog (blog_ID, blog_title, blog_category, blog_content, blog_date)
                                 VALUES (NULL, $blogtitle, $blogcategory, $blogcontent, blogdate )");
                                       You are missing a $ here------------------------^

また、変数を'一重引用符で囲む必要があります。

    $addBlogQuery = mysql_query("INSERT INTO blog (blog_ID, blog_title, blog_category, blog_content, blog_date)
                                 VALUES (NULL, '$blogtitle', '$blogcategory', '$blogcontent', '$blogdate' )");

さらに、mysql_* API は非推奨になりました。ここの大きな赤いボックスを読んでください。MySQLi または PDO はまだ比較的簡単に変更できるため、今すぐ使用を開始する必要があります。

于 2013-10-04T07:42:34.000 に答える
2

以下の変更を確認して、もう一度お試しください。

$blogdate = date("Y-m-d"); 
$addBlogQuery = mysql_query("INSERT INTO `blog` (`blog_title`, `blog_category`, `blog_content`, `blog_date`)
                                 VALUES ('$blogtitle', '$blogcategory', '$blogcontent', '$blogdate' )");
于 2013-10-04T07:43:06.603 に答える
2

より安全な方法を使用してください、PDO を使用してください -MYSQL_*非推奨の PDO エスケープ自体を使用しないでください。mysql_real_escape_string を使用する必要はありません

<?php
 $user="root";
  $pass="";
  $db = new PDO('mysql:host=hostname;dbname=databasename', $user, $pass); //establish new connection
$sql ="INSERT INTO blog (blog_ID, blog_title, blog_category, blog_content, blog_date)
                                     VALUES (NULL, ?, ?, ?, ?)";
try{
$stmt = $db->prepare($sql);
$stmt->execute(array($a, $b, $c, $d));
if($stmt->rowCount()>0){
//done
}
}catch(PDOException $e){
echo $e->getMessage();
?>

データベースに挿入する前に、SQL インジェクションと XSS を防ぐためにデータをサニタイズする必要があります。この関数を使用します。

function sanitize($data){
    $data= htmlentities(strip_tags(trim($data)));
    return $data;
}
于 2013-10-04T07:48:42.600 に答える