2014-10-17 82 views
0

我试图做一个脚本,将获得有关DJ的信息。 我想要做的是将DJ标题与表格中的DJ名称相匹配。 如果dj名称存在,那么我想选择该行并使用该信息。preg_match名称和标题与数据库中的信息

我首先做的是制作一个数组中的dj列表,然后我想将它与标题匹配,如果有匹配我想获取信息。

剧本,我现在是:

$ps = $this->db->prepare("SELECT djname FROM `djcrew`"); 
$ps->setFetchMode(PDO::FETCH_ASSOC); 
$ps->execute(); 
$selectit = $ps->fetchALL(); 
$result01 = preg_match('/'.$selectit.'/', $servertitle, $matches); 
$ps01 = $this->db->prepare('SELECT * FROM `djcrew` WHERE `djname` = :djname'); 
$ps01->bindParam(':djname', $matches[0], PDO::PARAM_STR); 
$ps01->setFetchMode(PDO::FETCH_ASSOC); 
$ps01->execute(); 
$data01 = $ps01->fetchAll(); 

的问题是,我现在已经是我的错误数组字符串转换 selectit的输出是:

Array 
(
    [0] => Array 
     (
      [djname] => test04 
     ) 

    [1] => Array 
     (
      [djname] => test03 
     ) 

    [2] => Array 
     (
      [djname] => test02 
     ) 

    [3] => Array 
     (
      [djname] => Test01 
     ) 

) 

我已经尝试了很多东西,但我无法得到这个工作。

[编辑]添加mysql表。

转储MySQL表的

CREATE TABLE IF NOT EXISTS `djcrew` (
`id` int(11) NOT NULL, 
    `djname` varchar(48) NOT NULL DEFAULT '', 
    `name` varchar(48) NOT NULL DEFAULT '', 
    `hobbies` varchar(48) NOT NULL DEFAULT '', 
    `other` text NOT NULL, 
    `facebook` varchar(48) NOT NULL DEFAULT '', 
    `twitter` varchar(48) NOT NULL DEFAULT '', 
    `request` varchar(2) NOT NULL DEFAULT '1', 
    `picname` varchar(32) NOT NULL DEFAULT '', 
    `active` varchar(32) NOT NULL DEFAULT '1' 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; 

INSERT INTO `djcrew` (`id`, `djname`, `name`, `hobbies`, `other`, `facebook`, `twitter`, `request`, `picname`, `active`) VALUES 
(1, 'Test01', 'Test - DJ', '', '', '', '', '1', 'test01', '0'), 
(2, 'Test02', 'Testing - DJ', '', '', '', '', '1', 'test02', '1'), 

我想要得到的是djname = ..名称= .. picname = ..

$arr = array('djname' => $data01['djname'], 'name' => $data01['username'], 'picname' => $data01['picname']); 
+0

你知道什么数组和什么方法'PDOStatement :: fetchAll()'在第一个地方做? – 2014-10-17 12:20:53

+0

给我们表的结构,数据的一个例子和预期的结果... – amdev 2014-10-17 12:23:46

+0

增加了数据库信息和我想用它 – 2014-10-17 12:31:29

回答

1

我想我已经找到了自己的回答你原来的问题,如果这仍然是相同的一个

$ps = $this->db->prepare("SELECT djname FROM `djcrew`"); 
$ps->execute(); 
$selectit = $ps->fetchALL(PDO::FETCH_ASSOC); 

$djs= array(); 

foreach($selectit as $row) { 
    $djs[] = $row['djname']; 
} 

if(in_array($servertitle, $djs) { 
    $sql = 'SELECT * FROM djcrew WHERE djname IN ("' . implode('", "', $djs) . '")'; 

    $stmt = $db->prepare($sql); 
    $stmt->execute(); 
    $result = $stmt->fetchAll(); 
} 

,或者如果$servertitle是一个数组

if(array_intersect($servertitle), $djs)) { 
    $sql = 'SELECT * FROM djcrew WHERE djname IN ("' . implode('", "', $djs) . '")'; 

    $stmt = $db->prepare($sql); 
    $stmt->execute(); 
    $result = $stmt->fetchAll(); 
} 
+0

这几乎是我想要的。 我想念的是,有一个servertitle和数据库中的djname匹配。 servertitle就像dj test为你演奏音乐(这是我认为使用preg_match的地方) – 2014-10-17 12:53:43

+0

什么是servertitle? – AdRock 2014-10-17 12:54:39

+0

我从shoutcast服务器获得$ servertitle的值。我想匹配$ servertitle(参见上面的脚本)和dj列表。 $ servertitle的属性就像“DJ Test为你演奏音乐” – 2014-10-17 13:01:56