【问题标题】:php,mysql_query, mysql_fetch_array while loop of <a href><a href> 的 php,mysql_query, mysql_fetch_array while 循环
【发布时间】:2014-09-07 15:11:52
【问题描述】:

我对 PHP 有点陌生,我正在建立一个音乐库作为一个学校项目。

有一个表'albums',其中包含'id'和'name'。 以及一个包含“id”、“name”、“album_id”和“path”的表“songs”。

长话短说,我正在尝试显示所选专辑中的所有歌曲。 用户创建一个专辑,然后将歌曲上传到其中。该部分效果很好,并且数据库已正确填写。 问题是,一旦我选择了一张专辑来查看其中的歌曲,我什么也得不到。

        <?php
        $album_id = $_GET['id'];
        //display songs from selected album
        $query = mysql_query("SELECT * FROM songs WHERE album_id = $album_id");
        while ($fetch_songs = mysql_fetch_array($query)) {
            $song_name = $fetch_songs['name'];
            $song_path = $fetch_songs['path'];
            ?>
                    <a href="music/<?php echo $song_path ?>">play song</a>
                    <br/>
                    <b><?php echo $song_name; ?></b> 
            <?php
        }
        ?>

    </div>   

我相信使用 href 将是最简单的选择,但我也尝试过音频控件,甚至尝试使用 img src 而不是 MP3 上传图像,但仍然没有成功,我只是得到一个空白页面。

这是歌曲上传到数据库的代码。

            if (isset($_POST["upload"])) {
                $name = $_POST['name'];
                $album_id = $_POST['album'];

                $file_name = $_FILES['file']['name'];
                $file_type = $_FILES['file']['type'];
                $file_size = $_FILES['file']['size'];
                $file_tmp = $_FILES['file']['tmp_name'];
                $random_name = rand();


                if (empty($name) || empty($file_name)) {
                    echo "Please fill all fields in the form ! <br/>";
                } else {
                    move_uploaded_file($file_tmp, 'music/' . $random_name . '.mp3');
                    mysql_query("INSERT INTO songs VALUES ('','$name','$album_id','$random_name.mp3')");

                    echo "File uploaded ! </br></br>";
                }
            }
            ?>

感谢您的帮助。

【问题讨论】:

  • 在您打开&lt;?php 标记error_reporting(E_ALL); ini_set('display_errors', 1); 后立即将错误报告添加到文件顶部,看看它是否产生任何内容,包括or die(mysql_error())mysql_query()
  • 不,没有收到任何错误报告。
  • 是白蛋白不是整数,您需要将其括在引号中
  • 你的意思是这样? : ("SELECT * FROM song WHERE 'album_id = $album_id'") 似乎没有任何区别。

标签: php mysql while-loop


【解决方案1】:

试试这个代码:

while ($fetch_songs = mysql_fetch_array($query, MYSQL_ASSOC))

更多信息:http://php.net/manual/en/function.mysql-fetch-array.php

【讨论】:

  • 仍然得到一张空相册:(
  • 在 while 中回显 $song_name 和 $song_path 并将结果复制到此处。
  • 嗯,这很奇怪。依然没有。所以问题出在SQL查询上?因为它似乎没有从数据库中读取数据。
  • 在 MYSQL(SQL 选项卡)中使用“SELECT * FROM song WHERE album_id = 1”来检查您的查询。
  • 但是 'album_id' 是一个 varchar(是的,我知道,这有点愚蠢)它是专辑的名称。这就是为什么有 $album_id 变量的原因。即使我正在尝试 : ("SELECT 'name','path' FROM song WHERE 'album_id = Superunknown'") 为了得到那张特定的专辑,我仍然一无所获。
猜你喜欢
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 2012-06-02
相关资源
最近更新 更多