我正在尝试为我本地计算机上的音乐创建一个在线数据库。我的库中已经有一个包含每首歌曲的表,并且想创建一个不同的表,其中仅包含作为我的播放列表之一的歌曲 ID(当我将歌曲添加到我的主表时自动递增)。
据我所知,匹配歌曲的唯一 100% 可认证方法是通过我磁盘上的位置( C:\Users\username\Music\iTunes\iTunes Media\Music\Jonathan Coulton 和 GLaDOS\Portal\128 128 Still Alive Duet.mp3 ) 为例。在我的 PHP 代码中,我将歌曲位置放入一个变量中,如果我相对于我的 MYSql 表中的等效歌曲位置打印它,它们完全匹配,但是当我尝试使用它运行 select 语句时,它给了我一个错误。据我所知,这是由位置信息中的反斜杠引起的。
这是我正在使用的选择语句,
SELECT id FROM itunes WHERE Location=$locationval
其中 $locationval 是当前歌曲的位置,id 是我的主表中自动递增的 id,iTunes 是我的主表。
有没有办法解决?由于我是初学者,反斜杠真的是问题吗?
这里的参考是导入播放列表的完整代码,它使用 PEAR 的 DB 插件(一个 PHP 扩展)。
<?php
// define table name
define('TABLE_NAME', 'playlist');
// create database connection
require_once('DB.php');
$dsn = 'mysql://username:password@localhost/itunes';
$DB =& DB::connect($dsn);
if (DB::isError($DB)) {
die($DB->getMessage());
}
$DB->setFetchMode(DB_FETCHMODE_ASSOC);
// load text file
$file = file_get_contents('Portal.txt');
// explode on new line
$file = explode("\r", $file);
set_time_limit(0);
// loop through each line in the file
foreach ($file as $key => $value) {
// explode on tab to get column list
$exploded = explode("\t", $value);
// check for first row, which contains column headers
if ($key == 0) {
}
else{
if(count($exploded)>3)
{
$locationval=$exploded[26];
echo $exploded[26];
echo "<br />";
$result = mysql_query("SELECT id FROM itunes WHERE Location=$locationval");
//$result = mysql_query("SELECT * FROM itunes WHERE id=8292");
set_time_limit(0);
$row = mysql_fetch_row($result);
//test statements to see if the query worked
echo "Test: ";
echo $row['id'];
echo $row['Location'];
echo "<br />";
}
}
}
?>
这是从这里的代码修改的:http: //ericlondon.com/posts/208-exporting-itunes-data-into-mysql-and-creating-sql-to-show-top-rated-albums
如果需要更多信息,请告诉我。