Php 使用PDO更新mysql不工作

Php 使用PDO更新mysql不工作,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试用php中的PDO更新mysql中的数据库 这是我的代码: <!DOCTYPE HTML> 我的电影数据库编辑 它做任何事情,除了实际更新它。所以我猜这执行得不对:updateMovie($newTitle,$newYear,$newGenreID) 有人看到这里有问题吗 我试过很多东西,但都不管用 谢谢 在updateMovie()中的UPDATE语句缺少WHERE子句。这段代码非常难读,而且很多注释都是无用的。。为什么有这么多额外的空间?请遵守常规的编码惯例

我正在尝试用php中的PDO更新mysql中的数据库

这是我的代码:

<!DOCTYPE HTML>


我的电影数据库编辑

它做任何事情,除了实际更新它。所以我猜这执行得不对:
updateMovie($newTitle,$newYear,$newGenreID)

有人看到这里有问题吗

我试过很多东西,但都不管用


谢谢

updateMovie()
中的
UPDATE
语句缺少
WHERE
子句。

这段代码非常难读,而且很多注释都是无用的。。为什么有这么多额外的空间?请遵守常规的编码惯例。您在每个文件中都有相同的用户名和密码。为什么不把它从功能中去掉呢。为什么不使用类呢?还应该将HTML和PHP分开。如果需要,请包含一个php文件,但不要将它们混合在一起!这让所有的东西都很难读。我还没有学会把它们分开。他在他的提问中也有一个错误。他错误地输入了“title”并编写了“titel”事务,错误处理也完全丢失了。还有其他非英语的表列名,因此
titel
可能实际上是正确的。这就是为什么错误处理很重要。这是titel,这是因为我自己没有制作db。我还没有学习错误处理。我刚开始编程!
<head>
    <title>My Movie DataBase! - EDIT</title>
</head>

<body>

    <?php

        include "functions.php";

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

            $postValue = $_POST["submit"];

            //get title to edit from form
            $title = $_POST["title"];

            //get current movie info from db
            $movieInfo = getMovie($title);

            //set variables with movie info from db     
            $year = $movieInfo[0]["jaar"];
            $genre_id = $movieInfo[0]["genre_id"];
            $genre = getGenre($genre_id);

            if( isset($_POST["change"]) ) {

                $newTitle = $_POST["newTitle"];
                $newYear = $_POST["newYear"];
                $newGenre = $_POST["newGenre"];
                $newGenreID = getGenreID($newGenre);

                updateMovie($newTitle, $newYear, $newGenreID);

                print("

                    The movie has been edited! <br />
                    It's now: <br />
                    Title: $newTitle <br />
                    Year: $newYear <br />
                    Genre: $newGenre <br />
                    Genre ID: $newGenreID <br />

                ");

                print("<br />Click <a href=\"index.html\">here</a> to go to the homepage! <br />");

            }

            else {

                print("

                    <form action=\"editmovie.php\" method=\"POST\">

                    Title:      <input type=\"text\" name=\"newTitle\" value=\"$title\" /> <br />
                    Year:       <input type=\"text\" name=\"newYear\" value=\"$year\" /> <br />
                    Genre ID:   <input type=\"text\" name=\"newGenreID\" value=\"$genre_id\" readonly=\"TRUE\" /> <br />
                    Genre:      <input type=\"text\" name=\"newGenre\" value=\"$genre\" /> <br />
                                <input type=\"hidden\" name=\"submit\" value=\"$postValue\" />
                                <input type=\"submit\" name=\"change\" value=\"Apply changes!\" /> <br />

                    </form>

                ");

            }

        }

        else {

            print("

                Which movie do you want to edit? <br />
                Type in the exact title of the movie: <br />

                <form action=\"editmovie.php\" method=\"POST\" >
                    Title: <input type=\"text\" name=\"title\" /> <br />
                    <input type=\"submit\" name=\"submit\" value=\"Continue!\" />
                </form>


            ");

        }

    ?>

</body>
<?php

//function returns executed $sql array as FETCH_ASSOC
function dbConn($sql) {

    //db connection     
    $user = "root";
    $pass = "root";

    $database = new PDO(
        'mysql:host=localhost; port=8473; dbname=moviedb',
        $user,
        $pass
    );

    //sql statement
    $statement = $database -> prepare("$sql");

    //execute sql statement
    $statement -> execute();

    $returnArray = $statement -> fetchAll(PDO::FETCH_ASSOC);

    return $returnArray;

}

function getMovie($title) {

    //db connection     
    $user = "root";
    $pass = "root";

    $database = new PDO(
        'mysql:host=localhost; port=8473; dbname=moviedb',
        $user,
        $pass
    );

    //sql statement
    $statement = $database -> prepare("

        SELECT *
        FROM Film
        WHERE titel = :title

    ");

    //bindvalue $title aan :title
    $statement -> bindValue(":title", $title, PDO::PARAM_STR);

    //execute sql statement
    $statement -> execute();

    return $statement -> fetchAll(PDO::FETCH_ASSOC);

}

function updateMovie($title, $year, $genre_id) {

    //db connection     
    $user = "root";
    $pass = "root";

    $database = new PDO(
        'mysql:host=localhost; port=8473; dbname=moviedb',
        $user,
        $pass
    );

    //sql statement
    $statement = $database -> prepare("

        UPDATE Film
        SET titel = :title,
        jaar = :year,
        genre_id = :genre_id

    ");

    //bindvalue
    $statement -> bindValue(":title", $title, PDO::PARAM_STR);
    $statement -> bindValue(":year", $year, PDO::PARAM_STR);
    $statement -> bindValue(":genre_id", $genre_id, PDO::PARAM_STR);

    //execute sql statement
    $statement -> execute();

}

//print a table of an array $movie
function movieTable($movieArray) {

    //tablehead
    print("<table border=\"2\">");
    print("

        <tr>
            <th>Title</th>
            <th>Jaar</th>
            <th>Genre ID</th>
            <th>Genre</th>
        </tr>

    ");

    foreach( $movieArray AS $index => $record ) {

        $titel = $record["titel"];
        $jaar = $record["jaar"];
        $id = $record["id"];
        $naam = $record["naam"];

        print("

            <tr>
                <td>$titel &nbsp&nbsp</td>
                <td>$jaar &nbsp&nbsp</td>
                <td>$id &nbsp&nbsp</td>
                <td>$naam &nbsp&nbsp</td>
            </tr>

        ");

    }

    print("</table>");

}

//print the moviedb in a table
function movieDB() {

    $movieArraySQL = "
            SELECT F.titel, F.jaar, G.id, G.naam
            FROM Film F
            JOIN Genre G ON F.genre_id = G.id
            ORDER BY F.titel
        ";

        movieTable(dbConn($movieArraySQL));

}

//adds a movie with title=$title, jaar=$jaar, genre_id=$genre_id to the database. returns execute statement (TRUE if success, FALSE if failed)
function addMovie($titel, $jaar, $genre_id) {

    //db connection     
    $user = "root";
    $pass = "root";

    $database = new PDO(
        'mysql:host=localhost; port=8473; dbname=moviedb',
        $user,
        $pass
    );

    //sql statement
    $statement = $database -> prepare("

        INSERT INTO Film
        VALUES (:titel, :jaar, :genre_id)

    ");

    $statement -> bindValue(":titel", $titel, PDO::PARAM_STR);
    $statement -> bindValue(":jaar", $jaar, PDO::PARAM_STR);
    $statement -> bindValue("genre_id", $genre_id, PDO::PARAM_STR);

    //execute sql statement
    return $statement -> execute();

}

//returns genre with genre_id=$genre_id
function getGenre($genre_id) {

    //db connection     
    $user = "root";
    $pass = "root";

    $database = new PDO(
        'mysql:host=localhost; port=8473; dbname=moviedb',
        $user,
        $pass
    );

    //sql statement
    $statement = $database -> prepare("

        SELECT naam
        FROM Genre
        WHERE id = :genre_id

    ");

    $statement -> bindValue(":genre_id", $genre_id, PDO::PARAM_STR);

    $statement -> execute();

    $tempArray = $statement -> fetchAll(PDO::FETCH_ASSOC);

    return $tempArray[0]["naam"];

}

//returns genre id with genre=$genre
function getGenreID($genre) {

    //db connection     
    $user = "root";
    $pass = "root";

    $database = new PDO(
        'mysql:host=localhost; port=8473; dbname=moviedb',
        $user,
        $pass
    );

    //sql statement
    $statement = $database -> prepare("

        SELECT id
        FROM Genre
        WHERE naam = :genre

    ");

    $statement -> bindValue(":genre", $genre, PDO::PARAM_STR);

    $statement -> execute();

    $tempArray = $statement -> fetchAll(PDO::FETCH_ASSOC);

    return $tempArray[0]["id"];

}