我有一个查询,我想得到该查询的完整陈述,即:
$ids = 1;
$query = $db->prepare('SELECT name FROM fruits WHERE ids = :ids');
$query->bindParam(':ids', $ids, PDO::PARAM_INT);
$query-execute();
# Runs the query:
SELECT name FROM fruits WHERE ids = 1
我希望得到上述查询,而不是:
SELECT name FROM fruits WHERE ids = :ids
因为我遇到了这个查询的问题,所以没有返回正确的值。
由于上表具有巨大的值,我使用我刚创建的另一个表进行了测试:
CREATE TABLE IF NOT EXISTS `news` (
`idn` int(5) unsigned NOT NULL AUTO_INCREMENT,
`news_title` varchar(150) NOT NULL,
`news_desc` longtext NOT NULL,
`user_id` int(5) NOT NULL DEFAULT '1' COMMENT 'who added the news',
`randkey` varchar(30) NOT NULL,
`person_ip` varchar(30) NOT NULL,
`when` varchar(30) NOT NULL COMMENT 'when was added',
`on_off` enum('0','1') NOT NULL DEFAULT '0' COMMENT '0: on, 1: off',
PRIMARY KEY (`idn`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- Dumping data for table `news`
--
INSERT INTO `news` (`idn`, `news_title`, `news_desc`, `user_id`, `randkey`, `person_ip`, `when`, `on_off`) VALUES
(1, 'title', 'desc here', 1, '', '', '645167451764', '0'),
(2, 'news title', 'news description', 1, '', '', '14335983795639', '0');
,代码是:
$OnOff = 1;
$statement = $connexion->prepare("SELECT * FROM news WHERE on_off = :on_off");
$statement->bindParam(':on_off', $OnOff, PDO::PARAM_INT);
$statement->execute();
$row = $statement->fetchAll();
$rowCount = $statement->rowCount();
if($rowCount){
foreach($row as $varr=>$arr)
{
$idn = $arr['idn'];
$news_title = $arr['news_title'];
$news_desc = $arr['news_desc'];
$user_id = $arr['user_id'];
$when = $arr['when'];
$randkey = $arr['randkey'];
$on_off = $arr['on_off'];
echo $idn.': '.$news_title.'<br />';
echo 'desc '.$news_desc.'<br />';
echo 'id '.$user_id.'<br />';
echo 'when '.$when.'<br />';
echo 'key '.$randkey.'<br />';
echo 'on '.$on_off.'<br />';
} // end foreach
} else {
echo $noResult;
}
OnOff是1,在表格中我没有on_off 1的任何新闻,都是0,所以它不应该显示任何新闻,但是它有,反之亦然
提前致谢
答案 0 :(得分:3)
有一个PDOStatement::debugDumpParams
方法,但它并没有按你的意愿显示最终查询。
如果你想调试你正在运行的查询,我建议你看看这个问题的答案(第二个,显示查看查询日志的方法):
此处有更多信息:
关于您的on_off
专栏。如果您设置enum('0','1')
,则表示他们只接受此值。但是,当您插入值1
(整数)时,您说您正在插入枚举值的索引1。在那种情况下'0'
。您应该像在SQL查询中一样插入'0'
或'1'
(如string
),或者如果要使用整数值,则1
(对于值{{ 1}})或'0'
(对于值2
)。
有关详细信息,请参阅here(&#34; 枚举文字的处理&#34;)