Php 多个MySQL输入
我有一个脚本,看起来像这样,它检索人们在LastFM上搜索的歌曲信息:Php 多个MySQL输入,php,mysql,database,Php,Mysql,Database,我有一个脚本,看起来像这样,它检索人们在LastFM上搜索的歌曲信息: class NowPlaying{ private $url; private $noTrackPlayingMessage; function __construct($user, $api_key){ // construct URL $this->url = 'http://ws.audioscrobbler.com/2.0/?method=user
class NowPlaying{
private $url;
private $noTrackPlayingMessage;
function __construct($user, $api_key){
// construct URL
$this->url = 'http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&limit=1';
$this->url .= '&user=' . $user . '&api_key=' . $api_key;
// default message
$this->noTrackPlayingMessage = 'Nothing is playing right now!';
}
// return the artist and track currently playing
public function getNowPlaying(){
// create an XML object
$xml = simplexml_load_file($this->url);
// get the latest track
$track = $xml->recenttracks->track;
// check if the track is actually playing
$nowplaying = $track->attributes()->nowplaying;
// return the track and artist if music is playing, otherwise show message
if($nowplaying){
$artist = $track->artist;
$songname = $track->name;
return $artist . ' - ' . $songname;
}
else{
return $this->noTrackPlayingMessage;
}
}
// set the message to be shown when no music is playing
public function setNoTrackPlayingMessage($messageIn){
$this->noTrackPlayingMessage = $messageIn;
}
} // end class
$nowPlaying = new NowPlaying($id, 'APIGOESHERE');
$nowPlaying->setNoTrackPlayingMessage($id); // optional
$currentplaying = $nowPlaying->getNowPlaying();
虽然这对于一个单独的LastFM帐户很有用,但是我想通过这个脚本运行几个帐户,详细信息存储在MySQL数据库中。我的表有两列,lastfmusername和currentsong。我想找到最近的FM用户正在收听的所有歌曲,然后将它们存储在他们的currentsong字段中
我已尝试将以下内容添加到顶部:
$sql = "SELECT lastfmusername FROM data";
$id = $db->query($sql);
然后将以下内容添加到底部:
$sql2 = "UPDATE lastfmtable SET currentsong = '$currentplaying' WHERE lastfmusername = '$id'";
$cursong = $db->query($sql2);
但那失败了,所以我不知道该怎么做。任何帮助都将不胜感激
$sql = "SELECT lastfmusername FROM data";
将返回一个数组,该数组包含lastfmusername的所有值,而不仅仅是一个值
请尝试以下方法:
$sql = "SELECT lastfmusername FROM data";
$users = $db->query($sql);
$id = $users[0]['lastfmusername'];
意思是:$id现在将存储第一个结果
您需要遍历用户的结果,并为每个用户运行更新查询。因此,您尝试执行的操作应如下所示:
foreach($users as $r){
$id= $r['lastfmusername'];
$nowPlaying = new NowPlaying($id, 'APIGOESHERE');
$nowPlaying->setNoTrackPlayingMessage($id); // optional
$currentplaying = $nowPlaying->getNowPlaying();
$sql2 = "UPDATE lastfmtable SET currentsong = '$currentplaying' WHERE lastfmusername = '$id'";
$cursong = $db->query($sql2);
}
谢谢,我刚刚试过,但是我得到了错误“致命错误:在第27行的file.php中调用非对象上的成员函数attributes()”,第27行包含“$nowplaying=$track->attributes()->nowplaying;”该错误属于您的lastfm类,是由于您以错误的格式(字符串、数组、整数或对象)发送了一个参数造成的。显然,您的类需要一个对象。像这样很难说。将所有相关代码放到jsfiddle.net上,并发布回链接。另外,提供一个mysql Select查询返回的示例行。