我试图制作一个可以获取DJ信息的脚本。 我想要做的是将DJ标题与表格中的DJ名称相匹配。 如果dj名称存在,那么我想选择该行并使用该信息。
我首先要做的是在数组中列出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 = .. name = .. picname = ..
$arr = array('djname' => $data01['djname'], 'name' => $data01['username'], 'picname' => $data01['picname']);
答案 0 :(得分: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();
}