【问题标题】:Creating album for mysql and php online photo album为 mysql 和 php 在线相册创建相册
【发布时间】:2015-03-17 02:00:29
【问题描述】:

我正在创建一个 mysql 支持的在线相册并使用 php 访问我的 mysql 数据库,我在尝试创建一个允许用户创建新相册的表单时遇到了麻烦,到目前为止我有以下代码:

<h1>My Photo Collection</h1>
<h3>Add, search and  browse through our collection!</h3>
<section id="collection">
<h4>Create Album</h4>
<form method='post'>
        <?php
        require_once 'config.php'; 
        $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
        if(isset($_POST['title'])){
        $name = $_POST['title'];
        if(empty($name)){ 
            echo "Please enter album name <br/>";
        } else{
            $mysqli->query("INSERT INTO albums VALUES('', '$title')");
            echo "Album was successfully created <br/>";
        }
    }
    ?>
    Album Name: <input type="text" name="title" /> <input type="submit" value="create" />
</form>
</section>

“专辑”表的架构是: title、date_created、date_modified(时间戳)、albumID(主键)

其他问题: 如何允许用户在表单中输入日期(并确保其格式正确),date_modified 时间戳如何工作(我需要将其放入表单中吗?)

我在我的 php 查询中使用的是 mysqli 而不是 mysql。 到目前为止,我的代码返回“未定义对象'title'” 谁能帮助我找出我的代码有什么问题?

谢谢!

【问题讨论】:

    标签: php mysql mysqli phpmyadmin


    【解决方案1】:

    目前,$title 未定义,您已将 $_POST['title'] 分配给 $name。由于您使用的是 MySQLi API,因此请改用准备好的语句。

    日期就用NOW()

    <?php
    
    require_once 'config.php'; 
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    
    if(isset($_POST['submit'])) {
        if(empty($_POST['title'])) {
            echo 'Please enter album name <br/>';
        } else {
            $name = $_POST['title'];
            $insert = $mysqli->prepare('INSERT INTO albums (title, date_created, date_modified) VALUES(?, NOW(), NOW())') or die($mysqli->error);
            $insert->bind_param('s', $name);
            if($insert->execute()) {
                echo 'Album was successfully created <br/>';
            } else {
                echo $mysqli->error;
            }
    
        }
    }
    
    ?>
    
    <h1>My Photo Collection</h1>
    <h3>Add, search and  browse through our collection!</h3>
    <section id="collection">
        <h4>Create Album</h4>
        <form method='post'>
            Album Name: <input type="text" name="title" /> 
            <input type="submit" name="submit" value="create" />
        </form>
    </section>
    

    【讨论】:

    • @mar 哦,好吧,它应该是$insert-&gt;bind_param('s', $name);,只有一个s
    • @mar 应该是 $insert-&gt;execute() 现在应该可以正常工作了
    • @mar 我很高兴这有帮助